配置Nginx多核CPU,worker_cpu_affinity使用方法和范例
1. 2核CPU,開啟2個進程
worker_processes 2;
worker_cpu_affinity 01 10;
01表示啟用第一個CPU內核,10表示啟用第二個CPU內核
worker_cpu_affinity 01 10;表示開啟兩個進程,第一個進程對應着第一個CPU內核,第二個進程對應着第二個CPU內核。
2. 2核CPU,開啟4個進程
worker_processes 4;
worker_cpu_affinity 01 10 01 10;
開啟了四個進程,它們分別對應着開啟2個CPU內核
3. 4核CPU,開4個進程
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
0001表示啟用第一個CPU內核,0010表示啟用第二個CPU內核,依此類推
4. 4核CPU,開啟2個進程
worker_processes 2;
worker_cpu_affinity 0101 1010;
0101表示開啟第一個和第三個內核,1010表示開啟第二個和第四個內核
2個進程對應着四個內核
worker_cpu_affinity配置是寫在/etc/nginx/nginx.conf里面的。
2核是 01,四核是0001,8核是00000001,有多少個核,就有幾位數,1表示該內核開啟,0表示該內核關閉。
5. 8核CPU,開8個進程
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
0001表示啟用第一個CPU內核,0010表示啟用第二個CPU內核,依此類推
worker_processes最多開啟8個,8個以上性能提升不會再提升了,而且穩定性變得更低,所以8個進程夠用了。
配置完畢后,重啟nginx ,執行/etc/init.d/nginx restart
測試nginx是否有用到多個CPU內核 ,在另一台機器上執行ab.exe -c 1000 -n 1000 http://www.domain.com/index.php
ab.exe是裝apache后帶的一個性能測試工具,它可以模擬多客戶端的並發請求。
在服務器上執行top,然后按1,就可以看到CPU內核的工作情況。如果多個CPU內核的利用率都相差不多,證明nginx己經成功的利用了多核CPU。
測試結束后,CPU內核的負載應該都同時降低。