后端服务器超时是怎么回事(服务器出现大量TIME)

服务器突然出现大量time_wait(因为大量连接资源被占用后不释放的话,会导致网站正常访问不能响应)如何应对?,现在小编就来说说关于后端服务器超时是怎么回事?下面内容希望能帮助到你,我们来一起看看吧!

后端服务器超时是怎么回事(服务器出现大量TIME)

后端服务器超时是怎么回事

一 、故障原因:

服务器突然出现大量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 "";

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页