今天所做的努力
都是在为明天积蓄力量

tcp syn无响应原因是net.ipv4.tcp_timestamps引发的

本文最后更新于2021年3月26日,已超过1336天没有更新,如果文章内容失效,请留言反馈给我们,谢谢!
强烈向大家推荐一个好网站,【我要自学网】,教程由在校老师录制,有办公会计、平面设计、室内设计、机械设计、网页编程、影视动画等教程.....让你足不出门,都可以体验学校的专业教育!

在我目前一个高并发的项目中,一度出现服务器不再响应任何TCP的syn请求,新的客户端死活介入不了服务。出现该状态之前由于并发亮的增加,曾经优化过服务器,主要是将TIME-WAIT sockets重新用于新的TCP连接,优化如下:

1.修改/ect/sysctl.conf

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 5
2.修改/etc/security/limit.conf

* soft nofile 2000000
* hard nofile 2000000

所以怀疑优化的这些参数出现问题了,通过查阅资料,发现tcp_timestamps默认是开启,如果再把tcp_tw_recycle设置为1,则60s内同一源ip主机的socket connect请求中的timestamp必须是递增的。也就是说服务器打开了 tcp_tw_reccycle了,就会检查时间戳,如果对方发来的包的时间戳是乱跳的或者说时间戳是滞后的,这样服务器肯定不会回复,所以服务器就把带了“倒退”的时间戳的包当作是“recycle的tw连接的重传数据,不是新的请求”,于是丢掉不回包,就出现了开始说的syn不响应。

解决方法:在/etc/sysctl.conf文件中再添加如下一行:

net.ipv4.tcp_timestamps=0

表示不再检查时间戳,并执行sysctl -p来生效,至此服务器恢复服务

赞(0)
未经允许不得转载:如需转载,请标注内容来源流觞 » tcp syn无响应原因是net.ipv4.tcp_timestamps引发的
分享到: 更多 (0)
强烈向大家推荐一个好网站,【我要自学网】,教程由在校老师录制,有办公会计、平面设计、室内设计、机械设计、网页编程、影视动画等教程.....让你足不出门,都可以体验学校的专业教育!
强烈向大家推荐一个好网站,【我要自学网】,教程由在校老师录制,有办公会计、平面设计、室内设计、机械设计、网页编程、影视动画等教程.....让你足不出门,都可以体验学校的专业教育!

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

今天所做的努力都是在为明天积蓄力量

联系我们关于小站