记一次TCP连接异常故障解决

关键字:linux 服务器 无法建立TCP连接 时间戳 net.ipv4.tcp_timestamps
一.情况表现为
    1.在公司内网对站点的http访问:
        linux主机出现故障:curl以及抓包分析,发现服务端不响应linux客户端的请求,无法建立TCP连接,浏览器返回“无法连接到服务器”
        windows主机正常
    2.http访问质量下降:
        基调显示,新架构上线后,访问质量下滑,主要表现为
        2.1.访问提示“无法连接到服务器”
        2.2.仅少数人遇到这种故障,并且一天中不是每次访问都会遇到,而是出现时好时坏的现象
二.处理过程
    直接上google搜索关键字“服务器无法建立TCP连接”。
    翻了几页后,发现这篇博文:“http://www.sunchis.com/html/os/linux/2012/0518/413.html”。
    看了一下,和我们公司内网的表现一模一样,但各种问题(1为这方面基础知识薄弱,2为没有时间验证此配置)
    然后这种问题持续了n久...一直以为是内部设备问题
    后期搞不定了,大胆在线上启用这个参数“net.ipv4.tcp_timestamps = 0”,做了下测试后,发现故障解除,原故障机每次访问都正常了!
    不过还是不明其中原理,只是大意了解,同样处于NAT上网方式的用户里(与别人共用出口IP地址),如果你的时间戳小于别人的,那么服务器不会响应你的TCP请求,要忽略此项,将net.ipv4.tcp_timestamps = 0(/etc/sysctl.conf)
三.总结
    后期学习时,看见了一个更加详细的博客,讲的很详细,也引入了新的问题:http://huoding.com/2012/01/19/142
    ====== 小抄 ======
    其实,linux服务器原本对时间戳(timestamps)默认是不开启的,Linux是否启用这种行为取决于tcp_timestamps和tcp_tw_recycle,因为tcp_timestamps缺省就是开启的,所以当tcp_tw_recycle被开启后,实际上这种行为就被激活了。
    net.ipv4.tcp_tw_recycle又是啥呢,搜索了一下基本上是TIME_WAIT连接的回收参数
    当 net.ipv4.tcp_timestamps 没有设置(缺省为开启),并且 net.ipv4.tcp_tw_recycle 也开启时,这个坑爹的错误就出现了,但是注意,只表现在NAT网络环境中。而且,大多数博客,以及一些大牛们,都有说过要开启 net.ipv4.tcp_tw_recycle ...
    ====== 小抄 ======
四.未完成的事项
    上文 http://huoding.com/2012/01/19/142 中提到的:
    1.(未验证)关闭timestamps后,tw_recycle功能是失效的问题
    2.(未验证)新的解决TIME_WAIT连接过多的方法:net.ipv4.tcp_max_tw_buckets = 10000 设置一个最大值,不过坏处是系统日志会提示:TCP: time wait bucket table overflow
更多相关文章
  • 返回结果示例:LAST_ACK 5SYN_RECV 30ESTABLISHED 1597FIN_WAIT1 51FIN_WAIT2 504TIME_WAIT 1057其中的SYN_RECV表示正在等待处理的请求数:ESTABLISHED表示正常数据传输状态:TIME_WAIT表示处理完毕,等待超时结 ...
  •         我们知道,一个基于TCP/IP的客户端-服务器的程序中,正常情况下,我会是启动服务器使其在一个端口上监听请求,等待客户端的连接:通过TCP的三次握手,客户端能够通过socket建立一个到服务器的连接:然后,两者就可以基于这个socket连接通信了.连接结束后,客户端(进程)会退出:在 ...
  • 1.用PUTTY远程连接服务器时,提示错误server unexpectedly closed network connection解决方法: 1)查看服务器防火墙,可将其关闭 2)查看sshd_config配置信息,将字段UseDNS的值设为no 3)查看/etc/hosts.deny文件中的内容 ...
  • 文章转自:http://network.51cto.com/art/201408/449186_all.htm,如需转载请标明出处.我们通过了解 TCP各个状态 ,可以排除和定位网络或系统故障时大有帮助.一.TCP状态LISTENING :侦听来自远方的TCP端口的连接请求 .首先服务端需要打开一个 ...
  • 记一次大量TCP连接失败
    背景 在一段没有日志的历史遗留代码上面加入监控部署后不久,就收到了服务调用成功率低的告警,真是哗了狗了 解决过程 client端在线上单机部署,根据监控上面的返回码比例看出失败原因都是链接失败,通过 tcpdump 在 server 端和 client 端抓包没有发现拒绝的链接请求,另外有另外一台机 ...
  • 文章出处:http://birdinroom.blog.51cto.com/7740375/1693449 一个TCP/IP连接断开以后,会通过TIME_WAIT的状态保留一段时间,时间过了才会释放这个端口,当端口接受的频繁请求数量过多的时候,就会产生大量的TIME_WAIT状态的连接,这些连接占着 ...
  •      随着业务量的增长,业务服务器网络压力不断增大,查看后端服务器网络连接状态,发现TIME_WAIT状态连接巨多,TIME_WAIT 占用大量的连接端口不释放,影响业务服务响应速度.同时大量的每个TCP连接都各自有个数据结构,叫TCP Control Block.Time_wait的时候这个数 ...
  •     记上一篇LVS防火墙配置后,接下来想分享一篇LVS故障排错案例,仅供大家参考和学习,LVS使用过程中,我们都会遇到很多的问题,但是遇到问题后,我们需要该如何处理呢?那这里分享我的解决思路.LVS+Keepalived+Nginx架构中,某天突然发现网站www.wuguangke.cn部分用户 ...
一周排行
  •        服务器安装完Windows server 2008 r2 桌面只有回收站,我的电脑等图标不显示,在桌面上邮件也不显示个性化选项解决方法如下:       打开命令窗口输入一下命令回车即可"C: ...
  • IT人的职业生涯设计是一个比较大的课题,一时很难面面俱到的谈清楚,我想在这里谈的是职业成功的关键是什么,实际上却并没有那么复杂,我认为放在最前面的应该是一个人的职业规划的意识,这个是第一重要的因素.前些日子一个朋友给 ...
  • EIGRPnull0路由作用,实验解释
       原理:当R2有一条指向R3的默认路由,而R2把汇总路由172.16.0.0/16发给 ...
  • 一.作业(练习)内容:1.总结Linux系统上的任务计划(at.crontab)的详细使用方法:2.每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY ...
  • 我们一般只是学过C/C++的数据结构,想必学C#的学生会疑惑,为什么C#没有数据结构呢,那我来告诉你,其实C#也是有数据结构的,只不过我们不了解罢了,经过我半天的编程,终于把C#的数据结构写出来了,也大大增加了我对数 ...
  • 开发团队中存在的问题
    0人了这篇文章类别:未分类┆阅读(0)┆评论(0) ┆ 返回博主首页┆返回博客首页 上一篇 ...
  • exchange2003用户的电子邮件地址栏丢失求助
    端午节值班,整理电子邮件全球通讯簿的时候,突然发现一个用户明明使用的是exchange同步 ...
  • 第一章:入门1.Knockout简介 (Introduction)Knockout是一个轻量级的UI类库,通过应用MVVM模式使JavaScript前端UI简单化.Knockout有如下4大重要概念:声明式绑定 (D ...
  •         四川地震已经整整50个小时过去了,让我们每一个中国人都一起默默祈祷,愿所有的灾区人民能平安.        2008年,对中国来说真是很不平安,春节大雪,西藏骚乱,圣火国外传递受阻,现在四川大地震,我 ...
  • 祝大家圣诞快乐!!!