您的位置:首页 > 运维架构 > Linux

在linux系统中处理TIME_WAIT连接过多

2015-01-23 15:08 176 查看
网络连接状态说明:
CLOSED 无连接是活动的或正在进行
LISTEN 务器在等待进入呼叫
SYN_RECV 个连接请求已经到达,等待确认
SYN_SENT 用已经开始,打开一个连接
ESTABLISHED 常数据传输状态
FIN_WAIT1 用说它已经完成
FIN_WAIT2 一边已同意释放
ITMED_WAIT 待所有分组死掉
CLOSING 边同时尝试关闭
TIME_WAIT 一边已初始化一个释放
LAST_ACK 待所有分组死掉

1.查看系统有TIME_WAIT多少个连接
[root@AY140528120357495c4bZ ~]# netstat -antup | grep 'TIME_WAIT' | wc -l
1570
[root@AY140528120357495c4bZ ~]#

2.修改内核参数关闭TIME_WAIT连接
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 --修改系統默认的 TIMEOUT 时间
[root@AY140528120357495c4bZ ~]# vim /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
[root@AY140528120357495c4bZ ~]#

3.使用配置生效
[root@AY140528120357495c4bZ ~]# sysctl -p | grep tcp
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
[root@AY140528120357495c4bZ ~]#

4.查看修改内核后的TIME_WAIT连接
[root@AY140528120357495c4bZ ~]# netstat -antup | grep 'TIME_WAIT' | wc -l
9
[root@AY140528120357495c4bZ ~]#

本文出自 “一起走过的日子” 博客,请务必保留此出处http://tongcheng.blog.51cto.com/6214144/1607428
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: