nginx基礎配置調整
(1)nginx執行工作程序個數,一般設定cpu的核心數
如果不瞭解cpu的核數,可以top命令之後按1看出來,也可以檢視/proc/cpuinfo檔案 grep ^processor /proc/cpuinfo | wc -l
比如4核配置
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000
比如8核配置
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 0000100000010000 00100000 01000000 10000000;
worker_processes最多開啟8個,8個以上效能提升不會再提升了,而且穩定性變得更低,所以8個程序夠用了。
Nginx最多可以開啟檔案數
worker_rlimit_nofile 65535;
這個指令是指當一個nginx程序開啟的最多檔案描述符數目,理論值應該是最多開啟檔案數(ulimit -n)與nginx程序數相除,但是nginx分配請求並不是那麼均勻,所以最好與ulimit -n的值保持一致。
注:
檔案資源限制的配置可以在/etc/security/limits.conf設定,針對root/user等各個使用者或者*代表所有使用者來設定。
* soft nofile 65535
* hard nofile 65535
使用者重新登入生效(ulimit -n)
(2)Nginx事件處理模型
events {
use epoll;
worker_connections 65535;
}
work_connections是單個worker程序允許客戶端最大連線數,這個數值一般根據伺服器效能和記憶體來制定,實際最大值就是worker程序數乘以work_connections
實際我們填入一個65535,足夠了,這些都算併發值,一個網站的併發達到這麼大的數量,也算一個大站了!
(3)開啟高效傳輸模式
http {
……
sendfile on;
tcp_nopush on;
……
sendfile on;//開啟高效檔案傳輸模式,sendfile指令指定nginx是否呼叫sendfile函式來輸出檔案,對於普通應用設為 on,如果用來進行下載等應用磁碟IO重負載應用,可設定為off,以平衡磁碟與網路I/O處理速度,降低系統的負載。
注意:如果圖片顯示不正常把這個改成off。
tcp_nopush on;必須在sendfile開啟模式才有效,防止網路阻塞,積極的減少網路報文段的數量(將響應頭和正文的開始部分一起傳送,而不一個接一個的傳送。)
(4)客戶端連線設定
主要目的是保護伺服器資源,CPU,記憶體,控制連線數,因為建立連線也是需要消耗資源的。
keepalived_timeout 60; 客戶端連線保持會話超時時間,超過這個時間,伺服器斷開這個連結
tcp_nodelay on; 防止網路阻塞,不過要包涵在keepalived引數才有效
client_header_buffer_size 4k; 客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設定,一般一個請求頭的大小不會超過 1k,不過由於一般系統分頁都要大於1k,所以這裡設定為分頁大小。分頁大小可以用命令getconf PAGESIZE取得。
open_file_cache max=65535 inactive=20s; 這個將為開啟檔案指定快取,預設是沒有啟用的,max指定快取數量,建議和開啟檔案數一致,inactive 是指經過多長時間檔案沒被請求後刪除快取。
open_file_cache_valid 30s; 這個是指多長時間檢查一次快取的有效資訊。
open_file_cache_min_uses 1; open_file_cache指令中的inactive 引數時間內檔案的最少使用次數,如果超過這個數字,檔案描述符一直是在快取中開啟的,如上例,如果有一個檔案在inactive 時間內一次沒被使用,它將被移除。
client_header_timeout 5; 設定請求頭的超時時間。我們也可以把這個設定低些,如果超過這個時間沒有傳送任何資料,nginx將返回request time out的錯誤
client_body_timeout 5; 設定請求體的超時時間。我們也可以把這個設定低些,超過這個時間沒有傳送任何資料,和上面一樣的錯誤提示
reset_timeout_connection on; 告訴nginx關閉不響應的客戶端連線。這將會釋放那個客戶端所佔有的記憶體空間。
send_timeout 5; 響應客戶端超時時間,這個超時時間僅限於兩個活動之間的時間,如果超過這個時間,客戶端沒有任何活動,nginx關閉連線
server_tokens off; 並不會讓nginx執行的速度更快,但它可以關閉在錯誤頁面中的nginx版本數字,這樣對於安全性是有好處的。
client_max_body_size 10m; 上傳檔案大小限制