“thundering herd, 惊群效应”

惊群效应是什么 惊群效应 (thundering herd) 是指多进程 (多线程) 在同时阻塞等待同一个事件的时候 (休眠状态) ,如果等待的这个事件发生,那么他就会唤醒等待的所有进程 (或者线程) ,但是最终却只能有一个进程 (线程) 获得这个时间的“控制权”,对该事件进行处理,而其他进程 (线程) 获取“控制权”失败,只能重新进入休眠状态,这种现象和性能浪费就叫做惊群效应。

惊群效应消耗了什么 Linux 内核对用户进程 (线程) 频繁地做无效的调度、上下文切换等使系统性能大打折扣。上下文切换 (context switch) 过高会导致 CPU 像个搬运工,频繁地在寄存器和运行队列之间奔波,更多的时间花在了进程 (线程) 切换,而不是在真正工作的进程 (线程) 上面。直接的消耗包括 CPU 寄存器要保存和加载 (例如程序计数器) 、系统调度器的代码需要执行。间接的消耗在于多核 cache 之间的共享数据。 为了确保只有一个进程 (线程) 得到资源,需要对资源操作进行加锁保护,加大了系统的开销。目前一些常见的服务器软件有的是通过锁机制解决的,比如 Nginx (它的锁机制是默认开启的,可以关闭) ;还有些认为惊群对系统性能影响不大,没有去处理,比如 Lighttpd。


https://www.cnblogs.com/Anker/p/7071849.html

https://zhuanlan.zhihu.com/p/51251700

https://zhuanlan.zhihu.com/p/65843741