nginx後端的服務很多TIME-WAIT

原因

在HTTP1.1協議中,有個 Connection 頭,Connection有兩個值,close和keep-alive,這個頭就相當於客戶端告訴服務端,服務端你執行完成請求之後,是關閉連接還是保持連接,保持連接就意味着在保持連接期間,只能由客戶端主動斷開連接。還有一個keep-alive的頭,設置的值就代表了服務端保持連接保持多久。

HTTP默認的Connection值爲close,那麼就意味着關閉請求的一方几乎都會是由服務端這邊發起的。那麼這個服務端產生TIME_WAIT過多的情況就很正常了。

雖然HTTP默認Connection值爲close,但是現在的瀏覽器發送請求的時候一般都會設置Connection爲keep-alive了。所以,也有人說,現在沒有必要通過調整參數來使TIME_WAIT降低了。

參考:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

nginx到後端的默認配置

Passing Request Headers
By default, NGINX redefines two header fields in proxied requests, “Host” and “Connection”, 
and eliminates the header fields whose values are empty strings. “Host” is set to the $proxy_host variable, 
and “Connection” is set to close.

nginx到後端默認的HTTP版本

Syntax:proxy_http_version 1.0 | 1.1;
    
Default:proxy_http_version 1.0;
    
Context:http, server, location
    
This directive appeared in version 1.1.4.

參考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version


nginx到後端不開啓keepalive的原因

keepalive的數量很難設置的準確,偏小的話就沒啥作用 偏大的話會影響worker的短連接處理都是內網 tcp連接的過程耗時應該可忽略吧,==但是帶來的問題可能會造成後端服務的TIME-WAIT增多

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章