惊群现象

今天再看nginx架构发现了它也存在惊群现象,之前师兄的socks5代理服务器同样存在着惊群现象。

惊群(thundering herd)是指,只有一个子进程能获得连接,但所有N个子进程却都被唤醒了,这种情况将使性能受损。


nginx架构如上图所示,每个worker都是从master fork过来,在master里先建立好需listen的socket之后,然后fork出多个work进程,这样每个work都可以去accept这个socket(当然不是同一个socket,只是每个work进程中的这个socket会listen同一个ip和端口)来的链接。当一个连接进来后,所有在work进程都会收到通知,但只有一个work可以accept这个连接,其他的则accept失败。

之前看过的socks5代理服务器也是类似,bind-listen后fork多个进程,每个进程单独accept循环,这也是之前性能上不去的一个重要原因,而且随着fork数增多,性能恶化加剧。


解决方法:记得之前看unix网络编程时说在各进程accept前加锁可以避免惊群

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值