nginx——優化 Nginx 連接超時時間


1. 什么是連接超時

(1) 舉個例子,某飯店請了服務員招待顧客,但是現在飯店不景氣,因此要解雇掉一些服務員,這里的服務員就相當於 Nginx 服務建立的連接

(2) 當服務器建立的連接沒有接收處理請求時,可以在指定的時間內讓它超時自動退出

2. 連接超時的作用

(1) 將無用的連接設置為盡快超時,可以保護服務器的系統資源(CPU、內存、磁盤)

(2) 當連接很多時,及時斷掉那些建立好的但又長時間不做事的連接,以減少其占用的服務器資源

(3) 如果黑客攻擊,會不斷地和服務器建立連接,因此設置連接超時以防止大量消耗服務器的資源

(4) 如果用戶請求了動態服務,則 Nginx 就會建立連接,請求 FastCGI 服務以及后端 MySQL 服務,設置連接超時,使得在用戶容忍的時間內返回數據

3. 連接超時存在的問題

(1) 服務器建立新連接是要消耗資源的,因此,連接超時時間不宜設置得太短,否則會造成並發很大,導致服務器瞬間無法響應用戶的請求

(2) 有些 PHP 站點會希望設置成短連接,因為 PHP 程序建立連接消耗的資源和時間相對要少些

(3) 有些 Java 站點會希望設置成長連接,因為 Java 程序建立連接消耗的資源和時間要多一些,這時由語言的運行機制決定的

4. 設置連接超時

(1) keepalive_timeout :該參數用於設置客戶端連接保持會話的超時時間,超過這個時間服務器會關閉該連接

(2) client_header_timeout :該參數用於設置讀取客戶端請求頭數據的超時時間,如果超時客戶端還沒有發送完整的 header 數據,服務器將返回 "Request time out (408)" 錯誤

(3) client_body_timeout :該參數用於設置讀取客戶端請求主體數據的超時時間,如果超時客戶端還沒有發送完整的主體數據,服務器將返回 "Request time out (408)" 錯誤

(4) send_timeout :用於指定響應客戶端的超時時間,如果超過這個時間,客戶端沒有任何活動,Nginx 將會關閉連接

(5) tcp_nodelay :默認情況下當數據發送時,內核並不會馬上發送,可能會等待更多的字節組成一個數據包,這樣可以提高 I/O 性能,但是,在每次只發送很少字節的業務場景中,使用 tcp_nodelay 功能,等待時間會比較長

http {

include mime.types;

server_names_hash_bucket_size 512;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

tcp_nodelay on;

client_header_timeout 15;

client_body_timeout 15;

send_timeout 25;

include vhosts/*.conf;

}

作者簡介: 
陳志珂(頭條號:強扭的瓜不好吃)公眾號“鉛筆學園”運維內容合作作者之一,目前就職於中國最大的安卓應用軟件公司,任高級工程師現在公司任php開發工程師,python開發工程師,高級運維工程師。
鉛筆學園:IT資源分享|知識分享,做初級程序員的指明燈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM