1, listen per_workernginx
listen 80; listen 8010 per_worker;
per_worker是说明当前的nginx除了创建在80号的端口上的侦听以外,还须要创建8010开始的4个(由worker_processess配置决定的)端口。git
而后,启动nginx,再在命令行上测试github
# sudo sbin/nginx -c your_demo_directory/nginx.conf for port in 80 {8010..8013}; do curl "http://127.0.0.1:$port/test"; done
显示相似以下,即检测成功。shell
2, accept_mutexcurl
假设你养了一百只小鸡,如今你有一粒粮食,那么有两种喂食方法:工具
能够看到此场景下,激活accept_mutex相对更好一些,让咱们修改一下问题的场景,我再也不只有一粒粮食,而是一盆粮食,怎么办?性能
此时若是仍然采用主动抓小鸡过来塞粮食的作法就过低效了,一盆粮食不知何年何月才能喂完,你们能够设想一下几十只小鸡排队等着喂食时那种翘首以盼的情景。此时更好的方法是把这盆粮食直接撒到小鸡中间,让它们本身去抢,虽然这可能会形成必定程度的混乱,可是总体的效率无疑大大加强了。测试
实际上咱们能够经过工具来测量 accept_mutex 对性能的影响,好比说 ngx-req-distr:url
开启 accept_mutex 时:spa
shell> ./ngx-req-distr -m `cat /path/to/nginx.pid` Tracing 12970 12971 12972 12974 (/path/to/nginx)... Hit Ctrl-C to end. ^C worker 12970: 0 reqs worker 12971: 37 reqs worker 12972: 127 reqs worker 12974: 3 reqs
关闭 accept_mutex 时:
shell> ./ngx-req-distr -m `cat /path/to/nginx.pid` Tracing 20433 20434 20435 20436 (/path/to/nginx)... Hit Ctrl-C to end. ^C worker 20433: 75 reqs worker 20434: 32 reqs worker 20435: 29 reqs worker 20436: 44 reqs
明显能够看出,同开启 accept_mutex 相比,关闭 accept_mutex 的时候,请求在多个 worker 间的分配更均衡了
ref :
https://github.com/aimingoo/ngx_cc/wiki/%E7%AE%80%E4%BB%8B
https://huoding.com/2013/08/24/281