记一次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部分用户 ...
一周排行
  • 刚在linuxtone 见到一个案例,无奈无法回复,只好贴在这里,作为shell题目收集下来.文本如下lease 10.127.1.254 {   starts 1 2012/08/20 8;   en ...
  • 一.概念理解NFS:简介:Network File System 的简称,目的是实现文件的共享,使不同的机器(或操作系统)彼此间共享一份数据文件,这样即大大增加了磁盘的剩余空间.如果是在两台类UNIX系统的主机之间实 ...
  • html中的input控件中radio类型的相关设置 radio包含有id,name,value, checked等属性,如下<inputtype="radio"id="test& ...
  • js小键盘需求
    /* container */     #container {         marg ...
  • 以下介绍GITHUB的一些基本操作和命令;没有什么理论,以实践为主准备工作①:在www.github.com网站注册自己的帐号②:在本地的机子上安排GIT HUB的客户端GITHUB使用的情景一:在github网站上 ...
  • 分阶段部署RODC
    分阶段部署RODCRODC特点:RODC 是域的附加域控制器,它承载 Active Dir ...
  • 这是软件工程课程布置的第一次作业,内容如下: 1.写一个能自动生成小学生四则运算题目的命令行“软件”,分别满足下面的各种需求,下面这些需求都可以用命令行参数的形式来指定: a)除了整数以外,还要支持真分数的四则运算. ...
  • 查询出数据为空,解决方案:链表 对应字段长度不一致.
  • web页面的加载顺序
    1.页面顺序    一个典型的web页面由于三个部分组成:html.css和JS.执行的顺 ...
  • 张国祥老师应邀到宁波金鸟服饰指导公司化运作落地工作转自中小企业规范化管理网 通讯员 小陈2014年12月22日晚上和23日上午,企业规范化管理实战专家.流程管理专家.联创世纪教育训练集团首席流程咨询专家张国祥老师,应 ...