轉:Nginx的超時keeplive_timeout配置詳解
https://blog.csdn.net/weixin_42350212/article/details/81123932
Nginx 處理的每個請求均有相應的超時設置。如果做好這些超時時間的限定,判定超時後資源被釋放,用來處理其他的請求,以此提升 Nginx 的性能。
keepalive_timeout
HTTP 是一種無狀態協議,客戶端向服務器發送一個 TCP 請求,服務端響應完畢後斷開連接。
如果客戶端向服務器發送多個請求,每個請求都要建立各自獨立的連接以傳輸數據。
HTTP 有一個 KeepAlive 模式,它告訴 webserver 在處理完一個請求後保持這個 TCP 連接的打開狀態。若接收到來自客戶端的其它請求,服務端會利用這個未被關閉的連接,而不需要再建立一個連接。
KeepAlive 在一段時間內保持打開狀態,它們會在這段時間內占用資源。占用過多就會影響性能。
Nginx 使用 keepalive_timeout 來指定 KeepAlive 的超時時間(timeout)。指定每個 TCP 連接最多可以保持多長時間。Nginx 的默認值是 75 秒,有些瀏覽器最多只保持 60 秒,所以可以設定為 60 秒。若將它設置為 0,就禁止了 keepalive 連接。
1 2 |
|
client_body_timeout
指定客戶端與服務端建立連接後發送 request body 的超時時間。如果客戶端在指定時間內沒有發送任何內容,Nginx 返回 HTTP 408(Request Timed Out)。
1 2 |
|
client_header_timeout
客戶端向服務端發送一個完整的 request header 的超時時間。如果客戶端在指定時間內沒有發送一個完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。
?
1 2 |
|
send_timeout
服務端向客戶端傳輸數據的超時時間。
1 2 |
|
客戶度連接nginx超時, 建議5s內
接收客戶端header超時, 默認60s, 如果60s內沒有收到完整的http包頭, 返回408
1 2 3 4 5 6 |
|
接收客戶端body超時, 默認60s, 如果連續的60s內沒有收到客戶端的1個字節, 返回408
1 2 3 4 5 6 7 |
|
keepalive時間,默認75s,通常keepalive_timeout應該比client_body_timeout大
1 2 3 4 5 6 |
|
The “Keep-Alive: timeout=time” header field is recognized by Mozilla and Konqueror. MSIE closes keep-alive connections by itself in about 60 seconds.
可以理解為TCP連接關閉時的SO_LINGER延時設置,默認5s
1 2 3 4 5 6 7 |
|
域名解析超時,默認30s
1 2 3 4 5 6 |
|
發送數據至客戶端超時, 默認60s, 如果連續的60s內客戶端沒有收到1個字節, 連接關閉
1 2 3 4 5 6 |
|
nginx與upstream server的連接超時時間
1 2 3 4 5 |
|
nginx接收upstream server數據超時, 默認60s, 如果連續的60s內沒有收到1個字節, 連接關閉
1 2 3 4 5 6 |
|
nginx發送數據至upstream server超時, 默認60s, 如果連續的60s內沒有發送1個字節, 連接關閉
1 2 3 4 5 6 |
|
轉:Nginx的超時keeplive_timeout配置詳解