TCP短链接调优

最近在做一个项目,用到HttpClient查询数据,由于服务端强制做成了短链接(大家都知道http1.1默认是带有keepalive机制),导致了请求方TCP状态很多都是TIME_WAITZ状态,端口被全部占用,请求失败

 

调优过程:

首先:

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=20 ,结果问题还是存在

接着查看了TCP参数,发现net.ipv4.tcp_tw_timeout 参数,凭直觉这个应该是TIME_WAIT过期时间,改成20,效果明显,解决问题

总结下:

net.ipv4.tcp_tw_reuse 这个参数启用,必须要应用程序做配置,用户态程序必须手动设置了socket是so_reuseaddr,否则无效果

net.ipv4.tcp_tw_recycle 这个参数主要底层运算还是需要根据TIME_WAIT过期时间,这个不调整,启用这个参数也没有效果

net.ipv4.tcp_tw_timeout  这个顾名思义就是TCP状态中TIME_WAIT的过期时间,默认情况是60秒

net.ipv4.tcp_fin_timeout 这个参数是TCP状态中FIN_WAIT2的过期时间



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—



你可能感兴趣的:(tcp)