服务器tcp连接占满_服务器出现大量TIME_WAIT解决方案

服务器出现大量TIME_WAIT连接导致资源占用过高,影响网站正常访问。通过监控和服务器状态检查发现问题,排除程序未关闭文件句柄的原因。解决方法包括调整系统文件句柄限制、优化sysctl.conf设置和修改nginx配置,尤其是启用HTTP1.1的长连接以减少TIME_WAIT状态。
部署运行你感兴趣的模型镜像

一 、故障原因:

服务器突然出现大量time_wait(因为大量连接资源被占用后不释放的话,会导致网站正常访问不能响应)。如何应对?

我这边先检查了监控和服务器当前的状态(time_wait连接确实异常):

1、监控

7560ee29d112a5a5611bb99b60d4de6d.png

2、登录服务器检查

8a8e28762efd15f3817128b50b2a7ee2.png

二、排查思路:

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=30sysctl -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 "";

您可能感兴趣的与本文相关的镜像

Linly-Talker

Linly-Talker

AI应用

Linly-Talker是一款创新的数字人对话系统,它融合了最新的人工智能技术,包括大型语言模型(LLM)、自动语音识别(ASR)、文本到语音转换(TTS)和语音克隆技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值