参考 https://blog.csdn.net/u011764940/article/details/111401290
对于客户端(为了解决TIME_WAIT问题的参数优化)
1,端口号范围调大
比较无脑的方案当然是把端口号范围调大,把端口号范围调大,这样就能抗更多的TIME_WAIT;同时将tcp_max_tw_bucket调小。只要port范围 - tcp_max_tw_bucket大于一定的值,那么就始终有port端口可用,这样就可以避免再次到调大临界值得时候继续击穿临界点。
2,作为客户端因为有端口65535问题,开启tcp_tw_reuse,不建议同时打开tw_recycle,帮助不大。
tw_reuse 帮助客户端1s完成连接回收,基本可实现单机6w/s请求,需要再高就增加IP数量吧。
对于服务端(NAT负载后的服务端和客户端访问网站出现丢包现象)
- 打开tw_reuse无效
2,net.ipv4.tcp_timestamps和net.ipv4.tcp_tw_recycle一定不能同时打开。
- 线上环境 tw_recycle 不要打开 因为一般的服务器、客户端都在NAT之后
公网服务打开就可能造成部分连接失败,内网的话到时可以视情况打开;
像我所在公司对外服务都放在负载后面,负载会把timestamp 都给清空,好吧,就算你打开也不起作用。
https://www.cnblogs.com/alchemystar/p/13444964.html
-
服务器TIME_WAIT 高怎么办
不像客户端有端口限制,处理大量TIME_WAIT Linux已经优化很好了,每个处于TIME_WAIT 状态下连接内存消耗很少,
而且也能通过tcp_max_tw_buckets =100000 解决(这个值根据TIME_WAIT数量定),现代机器一般也不缺这点内存。