记一次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部分用户 ...
一周排行
  • [[email protected] ~]# cat /erikxue_chinese.sh echo "-------------------------------------------------------- ...
  • 安卓第六夜凡高的自画像
    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载 ...
  • 浅谈JavaScript、ES5、ES6
    什么是JavaScript JavaScript一种动态类型.弱类型.基于原型的客户端脚本 ...
  • 1.mmseg4j把jar包放到webapp\WEB-INF\lib目录下schema加入<fieldType name="textComplex" class="solr.Tex ...
  • 随着IT技术的不断发展,INTERNET的不断普及,中小企业信息化建设已被大多数管理者提到正式工作日程,但是,中小企业信息化成功率却很低,据不完全统计:我国有中小企业1000多万家,企业在信息化建设投入中投资结构严重 ...
  • SUSE Linux+存储阵列目前是主流应用,根据自己的工程经验,以下总结下suse 服务器下如何使用LVM管理软件进行阵列配置.在SUSE服务器对阵列进行配置一般有两种模式:1,直接使用fdisk +外挂存储设备名 ...
  • //测试环境:win7 32位 1 // DriverEntry.cpp 2 3 #include "ntddk.h" 4 #include <ntddvol.h> 5 #includ ...
  • 离开老东家,忙着找新东家,现在还没有着落.恰好好友angerfire(http://angerfire.blog.51cto.com)建议我建立个博客和大家沟通沟通,旨在交流心得,或许会有很多启发.先送给大家个见面礼 ...
  •   在/etc/profile文件(或者在用户的文件夹)中增加export LC_ALL="zh_CN.GB18030"
  • 准备CPU支持kvm安装CentOS6.4关闭Selinux关闭iptables或者打开相应的端口,vnc需要用到源,需要用到epel源在Centos下检查cpu是否支持VT,没Ubuntu那么方便,输入下面命令,有 ...