天天看點

nginx高并發優化之核心子產品設定

一、概述

user   nginx nginx;
worker_processes auto;
worker_cpu_affinity auto;
error_log   /www/log/nginx_error.log;
pid         /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 65535;      

二、說明

1、nginx服務的程序數
ginx通過工作程序處理具體的請求,設定幾個工作程序就代表允許幾個并發。最優的設定是worker程序數量要與CPU的核數相等
worker_processes 8;
#建議按照cpu數目來指定,一般跟cpu核數相同或為它的倍數。
#檢視自身系統配置:cat /proc/cpuinfo| grep "processor"| wc -l 
#或者top指令輸出1檢視
worker_processes 8;
worker_processes auto;

2、指定CPU核心來運作工作程序
預設情況下worker程序不綁定在任何一個CPU上。在 nginx 版本 1.9.10 之後,是可以自動将 worker 程序綁定到對應的 cpu 上面的。
#為每個程序配置設定cpu,上例中将8個程序配置設定到8個cpu,當然可以寫多個,或者将一個程序配置設定到多個cpu
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
預設情況下,Nginx的多個程序有可能跑在某一個CPU或CPU的某一核上,導緻Nginx程序使用硬體的資源不均,是以綁定Nginx程序到不同的
CPU上是為了充分利用硬體的多CPU多核資源的目的。
worker_cpu_affinity用來為每個程序配置設定CPU的工作核心,參數有多個二進制值表示,每一組代表一個程序,每組中的每一位代表該程序使
用CPU的情況,1代表使用,0代表不使用。

#啟動多少worker程序,官方建議和CPU核心數一緻,第一種綁定組合方式
8核CPU2程序設定:worker_processes 2; worker_cpu_affinity 10101010 01010101;
第二種方式
8核CPU8程序設定:worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
最佳方式綁定方式
worker_processes auto;
worker_cpu_affinity auto;

3、work程序最大打開檔案數
worker_rlimit_nofile 65535;
#當一個nginx程序打開的最多檔案描述符數目,理論值應該是系統的最多打開檔案數(ulimit -n)與nginx程序數相除,但是nginx配置設定請
求并不是那麼均勻,是以最好與ulimit -n的值保持一緻。      

繼續閱讀