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

1. 什麼是鏈接超時php

(1) 舉個例子,某飯店請了服務員招待顧客,可是如今飯店不景氣,所以要解僱掉一些服務員,這裏的服務員就至關於 Nginx 服務創建的鏈接node

(2) 當服務器創建的鏈接沒有接收處理請求時,能夠在指定的時間內讓它超時自動退出python

2. 鏈接超時的做用程序員

(1) 將無用的鏈接設置爲儘快超時,能夠保護服務器的系統資源(CPU、內存、磁盤)後端

(2) 當鏈接不少時,及時斷掉那些創建好的但又長時間不作事的鏈接,以減小其佔用的服務器資源服務器

(3) 若是黑客攻擊,會不斷地和服務器創建鏈接,所以設置鏈接超時以防止大量消耗服務器的資源併發

(4) 若是用戶請求了動態服務,則 Nginx 就會創建鏈接,請求 FastCGI 服務以及後端 MySQL 服務,設置鏈接超時,使得在用戶容忍的時間內返回數據app

3. 鏈接超時存在的問題運維

(1) 服務器創建新鏈接是要消耗資源的,所以,鏈接超時時間不宜設置得過短,不然會形成併發很大,致使服務器瞬間沒法響應用戶的請求tcp

(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資源分享|知識分享,作初級程序員的指明燈

相關文章
相關標籤/搜索