记一次centos7系统内核调试的傻X行为

起因是因为我拿到一台云服务器之后,部署好了网站和数据库之后,查看netstart -anplt,发现TIME_WAIT特别多。其实也不是特别多,可能也就十几二十几个,然后我就想,在我的服务器里面不能出现这种状态。于是我就得得嗖嗖的在网上查找了解决TIME_WAIT的方法,所有解决方案都是增加以下参数来快速回收TIME_WAIT:

vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

针对于前三个参数,我觉得OK。但是如果加了最后面那个参数后,我的服务器给我的反馈就是时而能访问,时而不能访问(包括远程数据库,远程服务器都是),找了好几天的错误,大到运营商的网络问题,小到服务的参数,问了个遍,很纳闷。就是对内核参数的不了解,才导致这样。最后在sysctl.conf里面的参数都删除也不可以,突然想到查看了/proc/sys/net/ipv4下的相关文件,发现那个参数还是1 。我去,echo “0”进去,终于恢复了之前那样。我天呢,最后的劝告就是对内核参数不了解,千万不要改。就因为这个错误,公司里面的人访问都成问题了,搞得我一头汗,差点就要背行李回家了。

最后查看相关信息发现:tcp_tw_recycle 的机制是维护时间戳,发现时间戳后退的包直接丢掉,这就导致服务器可能会丢失 NAT 模式下运行的客户端连接。

猜你喜欢

转载自blog.csdn.net/leo15561050003/article/details/78402593
今日推荐