3.1 nginx全局塊和events塊配置
1 example
# 運行Nginx進程的用戶
user nginx;
worker_processes 8;
worker_cpu_affinity auto;
# 定義存儲某類型的全局錯誤的日志位置
# nginx日志分為很多級別 [debug | info | notice | warn | error | crit | alert | emerg]
error_log /var/log/nginx/error.log error;
# 指定進程ID(pid)存放的路徑
pid /var/run/nginx.pid;
# 一個nginx進程打開的最多文件描述符數目,理論值應該是系統的最多打開文件數(ulimit -n)與nginx進程數相除,但是nginx分配請求并不是那么均勻,所以最好與ulimit -n的值保持一致。
worker_rlimit_nofile 65535;
events {
# 使用epoll的I/O模型,用這個模型來高效處理異步事件
use epoll;
# 每個進程允許的最多連接數,理論上每臺nginx服務器的最大連接數為worker_processes*worker_connections。
worker_connections 20480;
}
2 配置CPU參數
Nginx默認沒有開啟利用多核cpu,我們可以通過增加worker_cpu_affinity配置參數來充分利用多核cpu的性能。cpu是任務處理,計算最關鍵的資源,cpu核越多,性能就越好。
2.1 nginx worker_processes
worker_processes最多開啟8個,8個以上性能就不會再提升了,而且穩定性會變的更低,因此8個進程夠用了;
2.2 nginx worker_cpu_affinity
cpu有多少個核?就有幾位數,1代表內核開啟,0代表內核關閉;
例如:我有一個服務器是最低配,8核CPU,nginx配置信息則如下:
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
上面的配置表示:8核CPU,開啟8個進程。
我其實把
nginx worker_cpu_affinity參數通常設置為auto
2.3 實例
2核CPU,開啟2個進程
worker_processes 2;
worker_cpu_affinity 01 10;
2核CPU,開啟4進程
worker_processes 4;
worker_cpu_affinity 01 10 01 10;
2核CPU,開啟8進程
worker_processes 8;
worker_cpu_affinity 01 10 01 10 01 10 01 10;
8核CPU,開啟2進程
worker_processes 2;
worker_cpu_affinity 10101010 01010101;
10101010表示開啟了第2,4,6,8內核,01010101表示開始了1,3,5,7內核;
如果多個CPU內核的利用率都相差不多,證明nginx己經成功的利用了多核CPU。
測試結束后,CPU內核的負載應該都同時降低。
時間是個偉大的作者,必將給出完美的答案。

浙公網安備 33010602011771號