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