Nginx worker 進程個數
語法:worker_processes number;
默認:worker_processes 1;
worker 進程的數量會直接影響性能,那麼,用戶配置多少個 worker 進程纔好呢?這實
際上與業務需求有關。
每個 worker 進程都是單線程的進程,它們會調用各個模塊以實現多種多樣的功能。如
果這些模塊確認不會出現阻塞式的調用,那麼,有多少 CPU 內核就應該配置多少個進程;反 之,如果有可能出現阻塞式調用,那麼需要配置稍多一些的 worker 進程。
查看CPU個數:cat /proc/cpuinfo |grep "cores"|uniq
或者:top命令後 按1
比如查到結果是 cpu cores : 4
worker_processes 4;
並用worker_cpu_affinity 配置來綁定 CPU 內核
爲什麼要綁定 worker 進程到指定的 CPU 內核呢 ? 假定每一個 worker 進程都是非常繁忙 的 , 如果多個 worker 進程都在搶同一個 CPU , 那麼這就會出現同步問題 。 反之 , 如果每一 個 worker 進程都獨享一個 CPU , 就在內核的調度策略上實現了完全的併發。
更多參照:
https://blog.csdn.net/u011957758/article/details/50959823
例如:
2個CPU內核
worker_processes 2;
worker_cpu_affinity 01 10;
4個CPU內核
worker_processes 4;
worker_cpu_affinity 1000 0100 0010 0001;
8個CUP內核
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;