1. 程式人生 > >nginx基礎配置調整

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