後端服務器超時是怎麼回事? 服務器突然出現大量time_wait(因為大量連接資源被占用後不釋放的話,會導緻網站正常訪問不能響應)如何應對?,現在小編就來說說關于後端服務器超時是怎麼回事?下面内容希望能幫助到你,我們來一起看看吧!
服務器突然出現大量time_wait(因為大量連接資源被占用後不釋放的話,會導緻網站正常訪問不能響應)。如何應對?
我這邊先檢查了監控和服務器當前的狀态(time_wait連接确實異常):
1、監控
2、登錄服務器檢查
二、排查思路:1、猜測是否因為程序打開大量文件句柄,沒有關閉導緻。(問了研發同事,排查過後沒有這種情況)
2、調大當前文件句柄
3、調優sysctl.conf文件
4、檢查nginx連接情況
三、解決方法:1、操作系統文件句柄之前已經調整過。
echo "ulimit -SHn 66536" >>/etc/rc.local
2、調優/etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse=1 #讓TIME_WAIT狀态可以重用,這樣即使TIME_WAIT占滿了所有端口,也不會拒絕新的請求造成障礙 默認是0
net.ipv4.tcp_tw_recycle=1 #讓TIME_WAIT盡快回收 默認0
net.ipv4.tcp_fin_timeout=30
sysctl -p
3、調整nginx 配置文件(最優方法)
upstream http_backend {
server 127.0.0.1:8080;
keepalive 16;
}
server {
...
location /http/ {
proxy_pass http://http_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
...
}
}
由于nginx 在反向代理http協議的時候,默認采用的http1.0.
HTTP1.0的特點:不支持長連接(http keep-alive).CLOSE通知後端服務器主動關閉連接。會導緻任何一個客戶端的請求都在後端服務器上産生了一個TIME-WAIT狀态連接
HTTP1.1的特點:支持長連接。
關鍵配置參數:keep-alive 16; proxy_http_vesion 1.1; proxy_set_header Connection "";
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!