tcp的TIME_WAIT状态太多了,导致响应时间过长

在进行性能测试时,发现由于TCP连接的TIME_WAIT状态过多,导致请求量受限。TIME_WAIT状态是TCP四次挥手释放连接过程的必然阶段,一般等待2MSL后关闭。大量TIME_WAIT可能是由于并发线程数过多或JMeter配置不当引起。解决方案包括分布式压测分散线程、调整JMeter配置启用长连接、修改Linux内核参数如tcp_tw_reuse和tcp_timestamps,以加速端口回收和识别新旧连接。
摘要由CSDN通过智能技术生成

背景介绍

        为了摸底项目的性能,需要进行性能测试。经过一番调研之后,决定使用基于腾讯云TKE的分布式jmeter进行压测,好处是有jmeter-suite可用,搭建环境方便;容器化部署可以方便的增加pod来提升压力。

       但是在实际施压的时候,发现请求量上不去,达不到压测效果。经定位发现,容器pod上存在大量TIME_WAIT,而实际在传输数据的连接远小于设置的并发线程数:

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

 

为什么会有TIME_WAIT

 

       这是TCP连接释放的4次挥手的过程:

  1. 主动关闭连接的一方,调用close();协议层发送FIN包
  2. 被动关闭的一方收到FIN包后,协议层回复ACK;然后被动关闭的一方&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值