解决web中出现大量TIME_WAIT问题

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 05:20 点击:

 

新增的一组Apache服务器上线以来,我用netstat -an命令发现服务器中有大量状态为TIME-WAIT的TCP连接,于是用/sbin/sysctl -a查看了一下Linux的各项内核参数,并翻阅有关资料,决定修改其中的两项参数,以达到减少TCP连接中TIME-WAIT sockets的目的。

 

  vi /etc/sysctl.conf

  编辑/etc/sysctl.conf文件,增加四行:

引用

 

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

  说明:

  net.ipv4.tcp_syncookies = 1 #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

  net.ipv4.tcp_tw_reuse = 1 #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

  net.ipv4.tcp_tw_recycle = 1 #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

    net.ipv4.tcp_fin_timeout = 30 #表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

 

  再执行以下命令,让修改结果立即生效:

  /sbin/sysctl -p

 

  用以下语句看了一下服务器的TCP状态:

 

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

  返回结果如下:

  ESTABLISHED 1423

  FIN_WAIT1 1

  FIN_WAIT2 262

  SYN_SENT 1

  TIME_WAIT 962

 

  效果:处于TIME_WAIT状态的sockets从原来的10000多减少到1000左右。处于SYN_RECV等待处理状态的sockets为0,原来的为50~300。

下面附上TIME_WAIT状态的意义:

 

客户端与服务器端建立TCP/IP连接后关闭SOCKET后,服务器端连 接的端口

状态为TIME_WAIT

 

是不是所有执行主动关闭的socket都会进入TIME_WAIT状态 呢?

有没有什么情况使主动关闭的socket直接进入CLOSED状态呢?

 

主动关闭的一方在发送最后一个ack 后

就会进入TIME_WAIT 状态 停留2MSL(max segment lifetime)时间

这个是TCP/IP必不可少的,也就是“解决”不了的。

 

也就是TCP/IP设计者本来是这么设计的

主要有两个原因

1。防止上一次连接中的包,迷路后重新出现,影响新连接

(经过2MSL,上一次连接中所有的重复包都会消失)

2。可靠的关闭TCP连接

在主动关闭方发送的最后一个ack(fin) ,有可能丢失,这时被动方会重新发

fin, 如果这时主动方处于CLOSED 状态 ,就会响应rst 而不是ack。所以

主动方要处于TIME_WAIT 状态,而不能是CLOSED 。

TIME_WAIT 并不会占用很大资源的,除非受到攻击。还有,如果一方send 或recv 超时,就会直接进入CLOSED 状态。

 

本文出自 “为生活喝彩” 博客

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • dos命令原来也能这样用?允许查找未知子目录指定文件
      •  windows的磁盘操作之八——格式化分区的思考
      • windows篇-第三章 安装和配置DNS服务器
      • windows篇-第二章 安装和配置Web服务器
      • windows篇-第一章 windows server 2008安装和简单配置
      •  windows server 2003断开远程之后自动注销用户
      • Windows服务器下用IIS Rewrite组件为IIS设置伪静态方法
      • Windows 2008 R2 SP1部署WSUS 3.0 SP2
      • Windows 7秘籍揭秘:用“手”写公式

      快速直达

      操作系统导航

      LinuxWindows虚拟机
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1