《关于《 服务器产生大量的TIME_WAIT的原因你知道吗?》更正 (qq.com)》
但是那篇文章中的案例是 UNIX/Linux 类的服务器,而对于 windows 机器并没有介绍
当 windows 服务器产生大量 TIME_WAIT 的连接并且无法释放的时候,我们应该怎么办?
今天给大家分享一个真实的案例,让大家以后遇到这种情况的时候有一个基本的排查思路
案例现象
一个惬意的午后,咸鱼正在和女同事交流工作(打情骂俏)得不亦乐乎,突然一阵急促的手机信息提示音把咸鱼拉回了现实
”来告警了!“
老话常说:认真工作的男人最帅。只见咸鱼赶紧回到工位然后打开电脑开始排查问题起来
”咦?zabbix agent is not available “
看样子,应该是这台服务器上的 zabbix_agent 进程挂了,看一下 zabbix_agentd 进程状态
zabbix_agent 进程在呀
cmd 命令看下这台 agent 与 proxy 的网络连接
netstat -an | find '192.168.149.128'
发现网络连接是有的,但是连接的状态引起了咸鱼的注意
”怎么全是 TIME_WAIT 状态?“
这台 agent 设置的是主动模式,在主动模式下,agent 会与 zabbix server(proxy)的 10051 端口连接,然后把数据主动传给 zabbix server(proxy)
咸鱼发现,这台 agent 与 proxy 的连接的状态全是 TIME_WAIT ,要不重启一下 zabbix_agent 看看,将这些连接都释放掉
”WTF?释放不了?“,咸鱼发现重启 zabbix_agent 之后之前已建立的TIME_WAIT状态连接并未得到释放
而且日志提示:
......active check configuration update from [192.168.149.128:10051] started to fail (cannot connect to [[192.168.149.128]:10051]: [0x00002747] 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。)
定位问题
咸鱼根据 zabbix 日志给出的信息以及 cmd 命令的结果,大致知道了是什么原因
这台 agent 上存在大量的 TIME_WAIT 状态的 TCP 连接释放不了导致系统的套接字资源被耗尽,agent 无法与 proxy 建立正常连接
那什么是 TIME_WAIT 连接?</