小谈accpet_mutex_delay参数

之前发现nginx的进程在任务分配方面非常的不平均,即某个进程一旦忙起来会忙很久,而空闲的线程却一直空闲,跟下代码发现epoll_wait中默认的timer是500ms(没有任务的情况下),可以通过减少accept_mutex_delay这个参数让空闲的进程有更大的机会抢到accept锁,从而使任务更加平均的分配,至于对效率的影响,需要测试才能知道。

我们提供的服务有:成都网站设计、做网站、成都外贸网站建设公司、微信公众号开发、网站优化、网站认证、宜黄ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的宜黄网站制作公司

worker process如果想要抢锁,就必须从epoll_wait中醒过来才可以走循环流程,然后走到抢锁的地方才有机会抢,而一旦worker process抢到了accept锁,任务比较多的情况下,epoll_wait会被频繁激活,导致抢锁的机会大大增加,而空闲的进程500ms才去尝试一次抢accept锁,所以请求量越大,空闲进程抢到锁的可能性就越小.

抢锁流程:

1、抢锁

2、把listen fd加入epoll事件

3、解锁(如果不解锁,那其他进程永远没有机会再accept了)

accept_mutex_delay

含义:设置获得互斥锁的最少延迟时间。

语法:accpet_mutex_delay

缺省:500ms

示例:accpet_mutex_delay 1000ms;

附件:http://down.51cto.com/data/2367950

分享名称:小谈accpet_mutex_delay参数
当前地址:http://csdahua.cn/article/pdhgie.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流