worker_processes與worker_connections 設(shè)置好合適大小,可以提示nginx處理性能,非常重要。
原作者的話:
As a general rule you need the only worker with large number of worker_connections, say 10,000 or 20,000.
However, if nginx does CPU-intensive work as SSL or gzipping and you have 2 or more CPU, then you may
set worker_processes to be equal to CPU number.
Besides, if you serve many static files and the total size of the files is bigger than memory, then you may
increase worker_processes to utilize a full disk bandwidth.
Igor Sysoev
翻譯:
一般一個(gè)進(jìn)程足夠了,你可以把連接數(shù)設(shè)得很大。(worker_processes: 1,worker_connections: 10,000)
如果有SSL、gzip這些比較消耗CPU的工作,而且是多核CPU的話,可以設(shè)為和CPU的數(shù)量一樣。(worker_processes: CPU核心數(shù))
或者要處理很多很多的小文件,而且文件總大小比內(nèi)存大很多的時(shí)候,也可以把進(jìn)程數(shù)增加,以充分利用IO帶寬(主要似乎是IO操作有block)
worker_processes,工作進(jìn)程數(shù)
1.默認(rèn):worker_processes: 1
2.調(diào)大:worker_processes: CPU核心數(shù),(雙核4線程,可以設(shè)置為4)
worker_connections,單個(gè)工作進(jìn)程可以允許同時(shí)建立外部連接的數(shù)量
數(shù)字越大,能同時(shí)處理的連接越多
1.默認(rèn):worker_connections: 1024
2.調(diào)大:worker_connections: 100000,(調(diào)大到10萬連接)
worker_connections解析
1.connections不是隨便設(shè)置的,而是與兩個(gè)指標(biāo)有重要關(guān)聯(lián),一是內(nèi)存,二是操作系統(tǒng)級別的“進(jìn)程最大可打開文件數(shù)”。
2.內(nèi)存:每個(gè)連接數(shù)分別對應(yīng)一個(gè)read_event、一個(gè)write_event事件,一個(gè)連接數(shù)大概占用232字節(jié),2個(gè)事件總占用96字節(jié),那么一個(gè)連接總共占用328字節(jié),通過數(shù)學(xué)公式可以算出100000個(gè)連接數(shù)大概會(huì)占用 31M = 100000 * 328 / 1024 / 1024,當(dāng)然這只是nginx啟動(dòng)時(shí),connections連接數(shù)所占用的nginx。
3.進(jìn)程最大可打開文件數(shù):進(jìn)程最大可打開文件數(shù)受限于操作系統(tǒng),可通過 ulimit -n 命令查詢,以前是1024,現(xiàn)在是65535,
nginx提供了worker_rlimit_nofile指令,這是除了ulimit的一種設(shè)置可用的描述符的方式。 該指令與使用ulimit對用戶的設(shè)置是同樣的效果。此指令的值將覆蓋ulimit的值,如:worker_rlimit_nofile 20960;
設(shè)置ulimits:ulimit -SHn 65535
worker_processes 2;
worker_rlimit_nofile 65535;
#pid logs/nginx.pid;
events {
worker_connections 65535;
}
通過 ps -elf | grep nginx 找到 nginx 的worker進(jìn)程ID
通過 cat /proc/31613/limits 查看,其中2291是worker進(jìn)程ID,請注意其中的Max open files
從上面的分析可以看出nginx占用內(nèi)存小,處理性能高,通過提高服務(wù)器的配置,Nginx可以應(yīng)對更大的連接數(shù)
原文鏈接:
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。