1. 程式人生 > >Nginx 效能優化(配置檔案詳解)

Nginx 效能優化(配置檔案詳解)

  隨著訪問量的不斷增加,需要對 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 來處理。