分布式问题系列--惊群
惊群 怎么理解 当你往一群鸽子中间扔一块食物,虽然最终只有一个鸽子抢到食物,但所有鸽子都会被惊动来争夺,没有抢到食物的鸽子只好回去继续睡觉, 等待下一块食物到来。这样,每扔一块食物,都会惊动所有的鸽子,即为惊群。 简单地说:就是扔一块食物,所有鸽子来抢,但最终只一个鸽子抢到了食物。 语义分析:食物只有一块,最终只有一个鸽子抢到,但是惊动了所有鸽子,每个鸽子都跑过来,消耗了每个鸽子的能量。(这个很符合达尔文的进化论,物种之间的竞争,适者生存。) 计算机中的惊群 在多进程/多线程等待同一资源时,也会出现惊群。即当某一资源可用时,多个进程/线程会惊醒,竞争资源。这就是操作系统中的惊群。 在分布式系统对同一资源进行更新的时候 惊群造成的影响 多进程/线程中: 惊醒所有进程/线程,导致n-1个进程/线程做了无效的调度,上下文切换,cpu瞬时增高 多个进程/线程争抢资源,所以涉及到同步问题,需对资源进行加锁保护,加解锁加大系统CPU开销 多进程/线程惊群常见分析 accept惊群 epoll惊群 nginx惊群 参考: nginx惊群处理 线程池惊群 在多线程设计中,经常会用到互斥和条件变量的问题...