1. 程式人生 > >Nginx 性能優化(配置文件詳解)

Nginx 性能優化(配置文件詳解)

pro linux cti size 長時間 並發連接 poll ipv4 服務器端

隨著訪問量的不斷增加,需要對 Nginx 和內核做相應的優化來滿足高並發用戶的訪問,
那下面在單臺 Nginx 服務器來優化相關參數。

Nginx.conf 配置優化:

worker_processes 8;
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 模型。epoll 是 Linux 內核為處理大批量文件描述符而作了改進的 poll,它能顯著提高程序在大量並發連接中只有少量活躍的情況下的系統 CPU 利用 率。
worker_connections
102400; 每個進程允許的最多連接數,理論上每臺 nginx 服務器的最大連接數為 worker_processes*worker_connections。
keepalive_timeout
60; keepalive 超時時間,客戶端到服務器端的連接持續有效時間,當出現對服務器的後 繼請求時,keepalive
-timeout 功能可避免建立或重新建立連接。
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 時間內一次沒被使用,它將被移除。
2) Linux 內核參數優化:
net.ipv4.tcp_max_tw_buckets = 10000
timewait 的數量,默認是 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 來處理。

 

Nginx 性能優化(配置文件詳解)