我知道worker_processes是表示工作进程的数量,但是这个值应该怎么设置呢?理论上来说按照cpu核心数的倍数来设置是没错的,但是到底是几倍呢?有的人说是有多少个核心就设置多少个进程,还有种说法是设成cpu核心数的两倍。
worker_processes
但是我想这里应该有一个原则,要不然nginx为什么不自己在程序中判断下核心数,然后fork相应的进程呢?肯定这个值是需要依据某种经验来判断的,有人能分享下这方面的经验吗?
一般来说,设置成CPU核的数量即可,另外不要忘了设置worker_cpu_affinity,这个配置用于将worker process与指定cpu核绑定,降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗。关于这个配置项可以参考http://www.nginx.org/en/docs/ngx_core...。
另外,淘宝维护的nginx分支Tengine可以使用auto命令自动配置worker_processes和worker_cpu_affinity。Tengine已经开源:http://tengine.taobao.org/
我个人是机器只跑nginx应用的话,设置总核心数-1 也许是习惯,不过一直工作的很好~
我觉得auto就可以了。
worker_processes auto;
一般来说,设置成CPU核的数量即可,另外不要忘了设置worker_cpu_affinity,这个配置用于将worker process与指定cpu核绑定,降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗。关于这个配置项可以参考http://www.nginx.org/en/docs/ngx_core...。
另外,淘宝维护的nginx分支Tengine可以使用auto命令自动配置worker_processes和worker_cpu_affinity。Tengine已经开源:http://tengine.taobao.org/
我个人是机器只跑nginx应用的话,设置总核心数-1 也许是习惯,不过一直工作的很好~
我觉得auto就可以了。