Nginx後端服務大量TIME WAIT的解決

2021-08-28 23:35:20 字數 974 閱讀 6532

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

http預設的connection值為close,那麼就意味著關閉請求的一方幾乎都會是由服務端這邊發起的。那麼這個服務端產生time_wait過多的情況就很正常了。

雖然http預設connection值為close,但是現在的瀏覽器傳送請求的時候一般都會設定connection為keep-alive了。所以,也有人說,現在沒有必要通過調整引數來使time_wait降低了。

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版本

參考:nginx到後端不開啟keepalive的原因

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

nginx屬於輕量級服務 後端重量級的服務關閉問題

nginx屬於輕量級服務 自身沒有維護檔案系統,沒有資料 重啟kill都問題不大後端重量級的服務 mysql mongodb自身帶檔案系統,只能用自身的命令停止關閉。最差 kill 9,pkill 測試 3306 command pid user fd type device size off no...

後端nginx使用set real ip

隨著nginx的迅速崛起,越來越多公司將apache更換成nginx.同時也越來越多人使用nginx作為負載均衡,並且 前面可能還加上了cdn加速,但是隨之也遇到乙個問題 nginx如何獲取使用者的真實ip位址.例項環境 假如說你的cdn廠商使用nginx,那麼在nginx上將 remote add...

後端必備 Nginx 配置

curl x127.0.0.1 80 i 測試的max agehttp 日誌字段說明 字段說明 remote addr 和 http x forwarded for 客戶端 ip 位址 remote user 客戶端使用者名稱 request 請求的 uri 和 http 協議 status 請求狀...