TIME-WAIT
来源:互联网 发布:设计算法需要考虑什么 编辑:程序博客网 时间:2024/06/05 11:05
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行 /sbin/sysctl -p 让参数生效。
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 修改系統默认的 TIMEOUT 时间
========================================
TIME_WAIT是TCP/IP连接终止所必须经过的正常状态(并非错误),如果有频繁的网络连接,请修改成长连接
检查net.ipv4.tcp_tw当前值,将当前的值更改为1分钟:
# sysctl -a|grep net.ipv4.tcp_tw
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
#vi /etc/sysctl.conf
增加或修改net.ipv4.tcp_tw值:
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.inet.tcp.msl = 2000
net.inet.tcp.always_keepalive = 0
使内核参数生效:
# sysctl -p
# sysctl -a|grep net.ipv4.tcp_tw
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
用netstat再观察正常
这里解决问题的关键是如何能够重复利用time_wait的值,我们可以设置时检查一下time和wait的值
#sysctl -a | grep time | grep wait
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
下面附上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 状态
- TIME-WAIT
- TIME-WAIT
- time-wait
- time wait
- time wait和close wait
- 【wait event】--CPU Time
- TIME-WAIT状态
- TIME-WAIT状态
- TIME-WAIT状态
- TIME-WAIT状态
- TCP连接TIME-WAIT
- [socket] 大量time wait 解决办法
- TIME-WAIT sockets快速回收
- 关于HttpServer的time-wait
- 关于HttpServer的time-wait
- mysql 大量time wait 解决办法
- tomcat大量time wait问题
- kernel: TCP: time wait bucket table
- tomcat 启动报错 registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister
- 开始学Spring第4章-使用JdbcTemplate访问数据库
- 邓白氏码 苹果市场
- crontab的基本内容,留给自己
- 【技术类】ArcGIS 查询分析扩展(Query Analysis Add-In)可以免费下载啦
- TIME-WAIT
- Drop Caches
- VC编译C程序时的问题解析
- Python开发框架Wing IDE发布4.1.11
- 名词
- 广播的接收与U盘广播
- Outlook jump list cannot display task button
- C# 线程池
- 一个优秀windows C++程序员的知识体系