nginx進程數(shù),建議按照cpu數(shù)目來指定,一般為它的倍數(shù)。
代碼如下:worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;為每個進程分配cpu,上例中將8個進程分配到8個cpu,當(dāng)然可以寫多個,或者將一個進程分配到多個cpu。
代碼如下:worker_rlimit_nofile 102400;這個指令是指當(dāng)一個nginx進程打開的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開文件數(shù)(ulimit -n)與nginx進程數(shù)相除,但是nginx分配請求并不是那么均勻,所以最好與ulimit -n的值保持一致。
代碼如下:use epoll;使用epoll的I/O模型,這個不用說了吧。
代碼如下:worker_connections 102400;每個進程允許的最多連接數(shù),理論上每臺nginx服務(wù)器的最大連接數(shù)為worker_processes*worker_connections。
代碼如下:keepalive_timeout 60;keepalive超時時間。
代碼如下:client_header_buffer_size 4k;客戶端請求頭部的緩沖區(qū)大小,這個可以根據(jù)你的系統(tǒng)分頁大小來設(shè)置,一般一個請求的頭部大小不會超過1k,不過由于一般系統(tǒng)分頁都要大于1k,所以這里設(shè)置為分頁大小。分頁大小可以用命令getconf PAGESIZE取得。
代碼如下:open_file_cache max=102400 inactive=20s;這個將為打開文件指定緩存,默認是沒有啟用的,max指定緩存數(shù)量,建議和打開文件數(shù)一致,inactive是指經(jīng)過多長時間文件沒被請求后刪除緩存。
代碼如下:open_file_cache_valid 30s;這個是指多長時間檢查一次緩存的有效信息。
代碼如下:open_file_cache_min_uses 1;open_file_cache指令中的inactive參數(shù)時間內(nèi)文件的最少使用次數(shù),如果超過這個數(shù)字,文件描述符一直是在緩存中打開的,如上例,如果有一個文件在inactive時間內(nèi)一次沒被使用,它將被移除。
內(nèi)核參數(shù)的優(yōu)化 代碼如下:net.ipv4.tcp_max_tw_buckets = 6000timewait的數(shù)量,默認是180000。
代碼如下:net.ipv4.ip_local_port_range = 1024 65000允許系統(tǒng)打開的端口范圍。
代碼如下:net.ipv4.tcp_tw_recycle = 1啟用timewait快速回收。
代碼如下:net.ipv4.tcp_tw_reuse = 1開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接。
代碼如下:net.ipv4.tcp_syncookies = 1開啟SYN Cookies,當(dāng)出現(xiàn)SYN等待隊列溢出時,啟用cookies來處理。
代碼如下:net.core.somaxconn = 262144web應(yīng)用中l(wèi)isten函數(shù)的backlog默認會給我們內(nèi)核參數(shù)的net.core.somaxconn限制到128,而nginx定義的NGX_LISTEN_BACKLOG默認為511,所以有必要調(diào)整這個值。
代碼如下:net.core.netdev_max_backlog = 262144每個網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時,允許送到隊列的數(shù)據(jù)包的最大數(shù)目。
新聞熱點
疑難解答