Nginx服務器進程數設置和利用多核CPU的方法

Nginx worker_processes進程數設置php

咱們的目的是要把不一樣的 worker_processes 進程分配至不一樣核上的 CPU 上運行,通常來講,擁有幾個邏輯CPU,就設置爲幾個worker_processes 爲宜,可是 worker_processes 超過8個就沒有多大意義了,緣由再上面那段英文裏已經提到了。nginx

你可使用這條命令來查看當前的CPU狀況:服務器

1性能

cat /proc/cpuinfo測試

或者直接顯示邏輯CPU的個數:ui

1spa

cat /proc/cpuinfo | grep "processor" | wc -lcode

Nginx worker_cpu_affinity 設置進程

worker_cpu_affinity 默認是沒有開啓的,0001 0010 0100 1000 分別表明第一、二、三、4個邏輯CPU,因此咱們設置0010 0100 1000將3個進程分別綁定到第二、三、4個邏輯CPU上:圖片

1

2

worker_processes 3;

worker_cpu_affinity 0010 0100 1000;

同時worker_cpu_affinity 能夠將同1個進程綁定在2個邏輯CPU上:

1

2

worker_processes 2;

worker_cpu_affinity 0101 1010;

0101也就是第一、3個邏輯CPU上,1010就是第二、4個邏輯CPU上。

從新加載 Nginx 配置文件:

1

/usr/local/nginx/sbin/nginx -s reload

在另外一臺安裝了 Apache 的主機下運行 ab 來測試:
ab -n 20000 -k http://www.1990y.com/p.php
你能夠測試一個須要MySQL查詢的PHP頁面,也能夠測試一個靜態圖片或者頁面。

在被測試服務器上可使用 top 查看當前服務器狀況,而後按 1 來顯示各個邏輯CPU的使用狀況。

另一種寫法:

worker_processes auto

The special value auto (1.9.10) allows binding worker processes automatically to available CPUs:

worker_processes auto;
worker_cpu_affinity auto;

開啓CPU多核利用

規則設定
(1)cpu有多少個核,就有幾位數,1表明內核開啓,0表明內核關閉
(2)worker_processes最多開啓8個,8個以上性能就不會再提高了,並且穩定性會變的更低,所以8個進程夠用了

演示實例
兩核cpu,開啓兩個進程

1

2

worker_processes 2;

worker_cpu_affinity 01 10;

01表示啓用了第一個cpu內核,10表示啓用了第二個cpu內核
worker_cpu_affinity 01 10;表示開啓了兩個進程,第一個進程對應着第一個cpu內核,第二個進程對應着第二個cpu內核

兩核cpu,開啓八個進程

1

2

worker_processes 8;

worker_cpu_affinity 01 10 01 10 01 10 01 10;

開啓了8個進程,它們分別對應了開啓2個內核

8核cpu,開啓8個進程

1

2

worker_processes 8;

worker_cpu_affinity 10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001;

00000001表示開啓第一個cpu內核,00000010表示開啓第二個cpu內核,依次類推

8核cpu,開啓2個進程

1

2

worker_processes 2;

worker_cpu_affinity 10101010 01010101;

10101010表示開啓了第2,4,6,8內核,01010101表示開始了1,3,5,7內核,2個進程對應着8個內核

相關文章
相關標籤/搜索