nginx的worker_processes和worker_connections設(shè)置多少合適?
worker_processes:操作系統(tǒng)啟動(dòng)多少個(gè)工作進(jìn)程運(yùn)行Nginx
注意是工作進(jìn)程,不是有多少個(gè)nginx工程。在Nginx運(yùn)行的時(shí)候,會(huì)啟動(dòng)兩種進(jìn)程,一種是主進(jìn)程master process;一種是工作進(jìn)程worker process。
例如我在配置文件中將worker_processes設(shè)置為4.
在這里插入圖片描述
圖中可以看到1個(gè)nginx主進(jìn)程,master process;還有四個(gè)工作進(jìn)程,worker process。主進(jìn)程負(fù)責(zé)監(jiān)控端口,協(xié)調(diào)工作進(jìn)程的工作狀態(tài),分配工作任務(wù),工作進(jìn)程負(fù)責(zé)進(jìn)行任務(wù)處理。一般這個(gè)參數(shù)要和操作系統(tǒng)的CPU內(nèi)核數(shù)成倍數(shù)。
worker_connections:這個(gè)屬性是指單個(gè)工作進(jìn)程可以允許同時(shí)建立外部連接的數(shù)量
無(wú)論這個(gè)連接是外部主動(dòng)建立的,還是內(nèi)部建立的。這里需要注意的是,一個(gè)工作進(jìn)程建立一個(gè)連接后,進(jìn)程將打開(kāi)一個(gè)文件副本。所以這個(gè)數(shù)量還受操作系統(tǒng)設(shè)定的,進(jìn)程最大可打開(kāi)的文件數(shù)有關(guān)。
更改操作系統(tǒng)級(jí)別的“進(jìn)程最大可打開(kāi)文件數(shù)”的設(shè)置
Linux設(shè)置“進(jìn)程最大可打開(kāi)的文件數(shù)”永久有效的方式
更改Nginx軟件級(jí)別的“進(jìn)程最大可打開(kāi)文件數(shù)”的設(shè)置
剛才更改的只是操作系統(tǒng)級(jí)別的“進(jìn)程最大可打開(kāi)文件”的限制,作為Nginx來(lái)說(shuō),我們還要對(duì)這個(gè)軟件進(jìn)行更改。打開(kāi)nginx.conf主配置文件。您需要配合worker_rlimit_nofile屬性。如下:
user root root;
worker_processes 4;
worker_rlimit_nofile 65535;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 65535;
}
請(qǐng)注意代碼行中加粗的兩個(gè)配置項(xiàng),請(qǐng)一定兩個(gè)屬性全部配置。配置完成后,請(qǐng)通過(guò)nginx -s reload命令重新啟動(dòng)Nginx。
驗(yàn)證Nginx的“進(jìn)程最大可打開(kāi)文件數(shù)”是否起作用
在linux系統(tǒng)中,所有的進(jìn)程都會(huì)有一個(gè)臨時(shí)的核心配置文件描述,存放路徑在 /pro/進(jìn)程號(hào)/limit。
[root@localhost nginx]# ps -elf | grep nginx
4 S root 2203 2031 0 80 0 - 46881 wait 22:18 pts/0 00:00:00 su nginx
4 S nginx 2204 2203 0 80 0 - 28877 wait 22:18 pts/0 00:00:00 bash
5 S root 2252 1 0 80 0 - 11390 sigsus 22:20 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
5 S nobody 2291 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process
5 S nobody 2292 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process
5 S nobody 2293 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process
5 S nobody 2294 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process
0 R root 2318 2299 0 80 0 - 28166 - 22:42 pts/0 00:00:00 grep --color=auto nginx
可以看到,nginx工作進(jìn)程的進(jìn)程號(hào)是:2291 2292 2293 2294。我們選擇一個(gè)進(jìn)程,查看其核心配置信息:
[root@localhost nginx]# cat /proc/2291/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 3829 3829 processes
Max open files 1024 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 3829 3829 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
請(qǐng)注意其中的Max open files ,分別是1024和4096。那么更改配置信息,并重啟Nginx后,配置信息就是下圖所示了:
[root@localhost conf]# cat /proc/2351/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 3829 3829 processes
Max open files 65535 65535 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 3829 3829 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
參考了大佬的博文
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。