与TIME_WAIT相关的几个内核参数修改测试讨论结论
2014-08-11 18:51
495 查看
以下来结论自tcpcopy & gryphon讨论群
经过试验测试得出,不保证肯定正确。
net.ipv4.tcp_tw_recycle
net.ipv4.tcp_tw_reuse
net.ipv4.tcp_timestamps
1) recycle和reuse参数必须在客户端和服务端都开启timestamps(=1)参数后才有效果,否则不生效。
2) 设置recycle参数后,可以快速回收处于TIME_WAIT状态的Socket;回收时间据网上介绍大概在700ms;(测试时手工操作基本1s内就消失了)。
3) timestamp开启情况下,会小幅影响吞吐量
4) reuse参数开启后,若针对处于TIME_WAIT状态的Socket进行bind,仍然会报ADDR IN USE,这应该是bind函数内部会检查Socket状态导致(具体可自行去研究源码)
5) reuse参数开启后,不进行bind操作,让操作系统来选择可用端口,可以看到端口得到了复用,可看如下截图。
注意: 正常情况外网不建议开启recycle参数,因为该参数开启后,会对时间戳进行校验,来自于NAT网络的客户端很有可能无法连接上。
经过试验测试得出,不保证肯定正确。
net.ipv4.tcp_tw_recycle
net.ipv4.tcp_tw_reuse
net.ipv4.tcp_timestamps
1) recycle和reuse参数必须在客户端和服务端都开启timestamps(=1)参数后才有效果,否则不生效。
2) 设置recycle参数后,可以快速回收处于TIME_WAIT状态的Socket;回收时间据网上介绍大概在700ms;(测试时手工操作基本1s内就消失了)。
3) timestamp开启情况下,会小幅影响吞吐量
4) reuse参数开启后,若针对处于TIME_WAIT状态的Socket进行bind,仍然会报ADDR IN USE,这应该是bind函数内部会检查Socket状态导致(具体可自行去研究源码)
5) reuse参数开启后,不进行bind操作,让操作系统来选择可用端口,可以看到端口得到了复用,可看如下截图。
注意: 正常情况外网不建议开启recycle参数,因为该参数开启后,会对时间戳进行校验,来自于NAT网络的客户端很有可能无法连接上。
相关文章推荐
- linux 下通过修改内核参数解决大量TIME_WAIT问题
- 修改Linux内核参数 减少TIME-WAIT
- Linux服务器web相关内核参数注解及TIME_WAIT状态的连接过多解决办法
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT
- Linux服务器web相关内核参数注解及TIME_WAIT状态的连接过多解决办法
- Linux服务器web相关内核参数注解及TIME_WAIT状态的连接过多解决办法
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT
- Postgres与OS内核相关的几个参数设置
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets[原创]
- 结合内核源码来看如何调整影响TIME_WAIT状态套接字数量的参数
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets
- 跟kernel相关的命令和几个内核参数
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets[转]
- TCP长连接的思考和相关问题的实验_百万链接数测试_百万链接内核参数的调整
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets
- 在 Solaris 下有内核参数对应 TIME_WAIT 状态保持时间
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets
- 优化内核参数,减少TCP连接中的TIME_WAIT(经典)