Nginx效能優化
優化Nginx程序數
檢視CPU
grep "model name" /proc/cpuinfo | cut -f2 -d:
程序繫結到不同的CPU
比如4核配置:
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000
開啟高效傳輸模式
http {
include mime.types;
default_type application/octet-stream;
……
sendfile on;
tcp_nopush on;
……
}
Nginx事件處理模型
events { use epoll; worker_connections 65535; multi_accept on; }
Nginx最大開啟檔案數
worker_rlimit_nofile 65535;
連線超時時間
主要目的是保護伺服器資源,CPU,記憶體,控制連線數,因為建立連線也是需要消耗資源的。
keepalive_timeout 60;
tcp_nodelay on;
client_header_buffer_size 4k;
open_file_cache max=102400 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
client_header_timeout 15;
client_body_timeout 15;
reset_timedout_connection on;
send_timeout 15;
server_tokens off;
client_max_body_size 10m;
-
keepalived_timeout :客戶端連線保持會話超時時間,超過這個時間,伺服器斷開這個連結。
-
tcp_nodelay:也是防止網路阻塞,不過要包涵在keepalived引數才有效。
-
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 時間內一次沒被使用,它將被移除。
-
client_header_timeout : 設定請求頭的超時時間。我們也可以把這個設定低些,如果超過這個時間沒有傳送任何資料,nginx將返回request time out的錯誤。
-
client_body_timeout設定請求體的超時時間。我們也可以把這個設定低些,超過這個時間沒有傳送任何資料,和上面一樣的錯誤提示。
-
reset_timeout_connection :告訴nginx關閉不響應的客戶端連線。這將會釋放那個客戶端所佔有的記憶體空間。
-
send_timeout :響應客戶端超時時間,這個超時時間僅限於兩個活動之間的時間,如果超過這個時間,客戶端沒有任何活動,nginx關閉連線。
-
server_tokens :並不會讓nginx執行的速度更快,但它可以關閉在錯誤頁面中的nginx版本數字,這樣對於安全性是有好處的。
-
client_max_body_size:上傳檔案大小限制。