Jmeter使用http请求时长连接的建立与保持问题

本文探讨了在JMeter中使用HTTP请求时遇到的连接建立与保持问题。作者发现从3.1升级到5.1.1后,HTTPClient4的连接管理存在缺陷,导致大量连接和TIME_WAIT状态。通过研究配置参数,如httpclient4.idletimeout、httpclient4.time_to_live和httpclient.reset_state_on_thread_group_iteration,作者找到了优化解决方案,包括根据测试场景选择不同的实现方式和调整连接超时时间。
摘要由CSDN通过智能技术生成

      从jmeter3.1升级到5.1.1一年多了。一开始使用的时候就发现使用httpclient4 容易报连接异常,所以一直都是用java实现进行测试。

       最近新的测试需求要建立大量连接。测试下来发现java实现底层应该是有复用连接的逻辑。使用15000的线程并发。在服务端的telegraf监控上只能统计到3000~4000的 established的TCP连接。 改源码这种操作还是靠后考虑,于是抓了一通包,百度了一通,试图从配置项里解决httpclient4的问题。

    大致过程如下:

       1、java实现的keepalive是有效的,单线程发送多次请求时,使用wireshark可以观察到只进行了在开头与结束进行了握手与挥手

        2、jmeter5.1.1的httpclient4实现与默认实现下,keepalive是无效的,单线程多次请求时,使用wireshark抓包,每次请求都要进行握手与挥手,这就坑了,难怪连接数蹭蹭的往上走。TIME_WAIT也是一直保持高值。

       3、网上搜出来的解决办法没有效果,现在搜索效率真的很低,反反复复搜出来就是同样的几篇文章,主要方法都是修改httpclient4.idletimeout的超时时间。实测根本没有作用,不知道这些文章是无脑转发还是爬虫爬下来的。

其实这个配置项的说明已经很清楚了,我当时看的时候就觉得这项应该没有作用:

# Idle connection timeout (Milliseconds) to apply if the server does not send
       # Keep-Alive headers (default 0)
     

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值