25
2016
03

惊群现象和Nginx处理惊群的方法

什么是“惊群”

当多个进程/线程再等待统一资源的时候,一旦多个进程/线程需要的资源出现释放时,进程/线程间就会出现对该资源的竞争现象,由于只有一个进程/线程请求到资源,就出现这种现象“惊群”(Thundering herd)。产生的结果就是

  1. 系统对用户进程/线程频繁的做无效的调度、上下文切换,系统系能大打折扣。

  2. 为了确保只有一个进程/线程得到资源,用户必须对资源操作进行加锁保护,进一步加大了系统开销。

Nginx处理惊群的方法

Nginx解决惊群的方法是负载均衡策略,nginx提供了一个accept_mutex这个东西,这是一个加在accept上的一把共享锁。有了这把锁之后,同一时刻,就只会有一个进程在accpet连接,这样就不会有惊群问题了。accept_mutex是一个可控选项,我们可以显示地关掉,默认是打开的。


« 上一篇下一篇 »

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。