我知道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就可以了。