MySQL服务器为何每天凌晨TIME_WAIT清零?
- 内容介绍
- 文章标签
- 相关推荐
最近在折腾一个神奇的现象:MySQL服务器每天凌晨像被魔法师施了法一样,那些该死的TIME_WAIT连接全都消失得无影无踪!这他妈的到底是怎么一回事?让我带着愤怒和好奇心深入挖掘这个鬼地方,翻车了。!
第一次发现:这他妈的是个什么鬼?
某天凌晨3点,我被监控告警吵醒了。睡眼惺忪地打开终端,发现数据库连接数暴涨到几万条!但更离谱的是这些连接全部都是TIME_WAIT状态!WTF!

我个人认为... 我立马像惊弓之鸟一样跳起来查看日志。后来啊发现更奇怪——到了第二天凌晨,这些TIME_WAIT连接全都消失不见了!这到底是谁干的好事?难道是黑客入侵?还是数据库自己长了智慧?
初步调查:追踪这些该死的连接
我决定用netstat -ant | grep TIME_WAIT | wc -l来查看当前TIME_WAIT连接数。 吃瓜。 后来啊显示有近5万个!这意味着什么?不就是有人在疯狂建立又断开TCP连接吗?
我继续用ss -s | grep TIME-WAIT检查系统状态: TCP: 49000 /proc/net/tcp: 48996 sockets ... TIME-WAIT: 48996 哦我的上帝! 不如... 几乎所有TIME_WAIT都是针对MySQL端口3306的!
理论极限受限于机器网卡性能 + TCP协议栈处理能力 实际场景中常常因TIME_WAIT爆满导致端口耗尽! 特别适合"做任务"型应用 最爱出现在"优雅关闭"没有实现好的场景 ...还有各种莫名其妙的异常断开导致半关闭状态! "style=" 为什么这帮混蛋程序员要用这种方式操作数据库?
我可是吃过亏的。
最近在折腾一个神奇的现象:MySQL服务器每天凌晨像被魔法师施了法一样,那些该死的TIME_WAIT连接全都消失得无影无踪!这他妈的到底是怎么一回事?让我带着愤怒和好奇心深入挖掘这个鬼地方,翻车了。!
第一次发现:这他妈的是个什么鬼?
某天凌晨3点,我被监控告警吵醒了。睡眼惺忪地打开终端,发现数据库连接数暴涨到几万条!但更离谱的是这些连接全部都是TIME_WAIT状态!WTF!

我个人认为... 我立马像惊弓之鸟一样跳起来查看日志。后来啊发现更奇怪——到了第二天凌晨,这些TIME_WAIT连接全都消失不见了!这到底是谁干的好事?难道是黑客入侵?还是数据库自己长了智慧?
初步调查:追踪这些该死的连接
我决定用netstat -ant | grep TIME_WAIT | wc -l来查看当前TIME_WAIT连接数。 吃瓜。 后来啊显示有近5万个!这意味着什么?不就是有人在疯狂建立又断开TCP连接吗?
我继续用ss -s | grep TIME-WAIT检查系统状态: TCP: 49000 /proc/net/tcp: 48996 sockets ... TIME-WAIT: 48996 哦我的上帝! 不如... 几乎所有TIME_WAIT都是针对MySQL端口3306的!
理论极限受限于机器网卡性能 + TCP协议栈处理能力 实际场景中常常因TIME_WAIT爆满导致端口耗尽! 特别适合"做任务"型应用 最爱出现在"优雅关闭"没有实现好的场景 ...还有各种莫名其妙的异常断开导致半关闭状态! "style=" 为什么这帮混蛋程序员要用这种方式操作数据库?
我可是吃过亏的。

