1. 程式人生 > 實用技巧 >Nginx效能優化

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:上傳檔案大小限制。