个人随笔
目录
Http请求短连接导致端口耗尽
2020-02-04 23:22:13

场景回放

  • A机器的服务请求B机器的服务
  • 短连接请求,动态创建连接端口
  • A机器服务会主动关闭连接
  • 短时间内高并发请求
  • A机器的tcpssports被耗尽了
  • 大部分网络连接处time_wait状态

端口耗尽

  • 主动调用close()/shutdown()断开连接,收到对方确认后状态变为TIME_WAIT。
  • TCP协议TIME_WAIT状态会一直持续2MSL,TIME_WAIT有时间窗口,Linux默认是60秒
  • TIME_WAIT状态的连接占用的资源不会被内核释放
  • TIME_WAIT状态转换到CLOSE状态后资源才会真正被系统收回。

客户端内核参数优化

使用命令:vi /etc/sysctl.conf

  1. #开启TCP连接中TIME-WAIT套接字的快速回收
  2. net.ipv4.tcp_tw_recycle=1
  3. #开启重用,表示是否允许将处于TIME-WAIT状态的socket(TIME-WAIT的端口)用于新的TCP连接 。
  4. net.ipv4.tcp_tw_reuse=1
  5. #对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。
  6. #对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
  7. net.ipv4.tcp_fin_timeout=5
  8. #TCP时间戳(会在TCP包头增加12个字节),以一种比重发超时更精确的方法(参考RFC 1323)
  9. #来启用对RTT 的计算,为实现更好的性能应该启用这个选项。
  10. net.ipv4.tcp_timestamps=1
  11. #收缩TIME_WAIT状态socket的回收时间窗口(该参数好像无效)
  12. net.ipv4.tcp_tw_timeout=3
  13. #tw的数目控制在15000,超过会自动清除
  14. net.ipv4.tcp_max_tw_buckets = 15000

然后执行/sbin/sysctl -p让参数生效。

————————————————
版权声明:本文为CSDN博主「iteye_4064」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/iteye_4064/article/details/82675651

 1666

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2