天天看點

nginx長連接配接nginx長連接配接

nginx長連接配接

很多參考教程都說設定nginx長連接配接是設定keepalive_timeout,往往忽視了keepalive_requests,nginx的keepalive_requests預設是100,一個長連接配接100次和短連接配接也差不多了。

keepalive_timeout含義

長連接配接有tcp/ip層面和http層面的,http1.1預設是長連接配接的,一般也隻需要設定http層面的,即keepalive_timeout.

keepalive_timeout time表示一個長連接配接如果在time秒沒有資料傳輸,nginx将會主動斷掉該連接配接。nginx預設是75s,一般qps比較大時可以将該時間改小,建議timewait狀态的連接配接數。

keepalive_requests含義

keepalvie_requsts 100表示一個長連接配接最多接收100次資料傳輸,nginx将會斷掉該長連接配接。nginx預設是100次。

綜述

是以,nginx的http層的長連接配接由上述兩個參數共同控制。

實戰經驗

如果負載均衡使用4層的,開啟了長連接配接,長連接配接建立起來後,4層的負載均衡并不能控制該連接配接。如果參數設定不合理,如keepalive_requests比較大時,負載均衡停止一台機器的權重,但該機器上已經建立起來的長連接配接會在很長一段時間存活,并且這些長連接配接一直在一個程序,這些會造成負載不均勻問題。

使用7層的負載均衡就無所謂了,因為負載均衡會upstream到背景伺服器,負載均衡會與背景伺服器建立自己的長連接配接,會重新分發連接配接。

繼續閱讀