一、性能優化相關配置:
(1)設置進程cpu的個數。
worker_process #;worker進程的個數;通常應該略少於CPU物理核心數。
(2)綁定物理cpu。
worker_cpu_affinity 00000001 00000010 00000100
(3)減少計時器解析度的值<間隔>。
timer_resolution 間隔;可減少gettimeofday()系統調用的次數;
(4)調低worker線程的nice值,提高優先級。
worker_priority -10; 指明worker進程的nice值;
二、以上詳解
(1)性能優化相關配置:
1、worker_process #; worker進程的個數;通常應該略少於CPU物理核心數。
2、worker_cpu_affinity cpumask 。。。;
優點: 提升CPU緩存的命中率;
context switch:會產生CPU的不必要的消耗;cpu進程切換(浪費cpu資源和時間)
CPU隔離(worker線程綁定單個cpu,)
cpumask: 0000 0011(表示第一和第二兩顆)
0000 0001
0000 0010
0000 0100
綁定三顆cpu=> worker_cpu_affinity 00000001 00000010 00000100
3、timer_resolution 間隔; 減低時間解析度,減少系統調用.生產力強的應該大量運行在用戶空間,
計時器解析度:降低此值,可減少gettimeofday()系統調用的次數;
4、worker_priority number;
指明worker進程的nice值;
-20,19
100,139
(2)事件相關的配置:
1、accept_mutex {off|on};
master調度用戶請求至各worker進程時使用的負載均衡鎖;on表示能讓多個worker輪流地、序列化地去響應新請求;
2、lock_file file;
accept_mutex用到的鎖文件路徑;
3、use [epoll|rtsig(實時信號)|select|poll]
指明使用的事件模型;建議讓Nginx自行選擇;
4、worker_connections #;
設定單個worker進程所能處理的最大並發連接數量;
worker_connects * work_processes 1024 * 8
(3)用於調試、定位問題的:
1、daemon {on|off} 是否以守護進程方式運行Nginx;調試時應該設置為off。
2、master_process {on|off};
是否以master/worker模型來運行Nginx;調試時可以設置為off;
3、error_log 位置 級別;
若要使用debug級別,需要在編輯Nginx時使用 --with-debug選項;
總結:常需要進行調整的參數
worker_process,worker_connections,worker_cpu_affinity,worker_priority