惊群现象会造成什么后果?

惊群会造成一点资源的浪费,只要经过简单的处理,不会导致任何业务异常。workerman中多个进程/线程尝试去获取客户端链接时,如果发现链接已经被其它进程/线程认领,就什么也不做,没有任何影响。

惊群
简单的说 某个事件发生后,会唤醒多个正在等待该事件的进程/线程,造成一定的cpu资源的浪费

就像一个客人进餐馆吃饭(代表一个客户端链接到来),这时一些休息的服务生(接受链接的进程)看到客人来了赶紧起来去招呼客人,但是一个客人一个服务生就够了,其它服务生看到客人已经被一个服务生抢先认领了,没自己的事情了就又回去休息,造成浪费。

解决办法
通常是通过锁机制等,在任意时刻只让一个进程/线程去接受客户端链接。但是锁机制也会造成cpu等资源的消耗及性能损耗,比起惊群的消耗谁大谁小目前没有一个定论。

目前一些常见的服务器软件有的是通过锁机制来解决惊群的,比如nginx(nginx锁机制默认是开启的,可以关闭);还有一些认为惊群对系统影响不大,没有去处理,比如lighttpd。而apache一般没有惊群效应,apache的进程模型是多个进程阻塞在accept上,目前的Linux内核已经解决了accpet惊群问题(经过本人实际测试确实如此)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容