微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于jmeter的httpclient.reset_state_on_thread_group_iteration设置项的理解

关于jmeter的httpclient.reset_state_on_thread_group_iteration设置项的理解

周末在学习jmeter性能测试的时候,发现jmeter的响应时间很长,而且测试过程中的性能测试曲线走势波动很大,于是经过分析之后得出结果:httpclient.reset_state_on_thread_group_iteration为ture导致的

该选项是jmeter5.0版本引入的一个功能,这个选项是什么意思呢,其实通过字面意思来理解,就可以得出结论,这个选项就是重置http线程组迭代功能的。

这个选项认设置为true,也就是说,认开启后,同一个线程组迭代时,它会重置tcp连接状态,也就【握手-传输数据-挥手-握手-传输数据-挥手 】这么一个过程。

接下来,我们分别设置为ture、false选项,然后通过抓包来看下到底有什么不同之处。

首先我们设置为该选项为true,线程组:1 迭代次数:2。然后重启jmeter,开启wireshark抓包

抓包截图如下:

image-20220124134059812

从抓包结果来看:

首先是三次握手,然后传输数据、接着挥手,然后又开始握手,传输数据,然后挥手,结束这个过程。

这个结论和我们上文中提到的是一致。

接着,我们将该选项设置为false,然后重启jmeter,再抓一次,抓包结果如下:

image-20220124134227160

从抓包结果来看:

首先还是三次握手、接着传输数据,由于2次迭代动作其实都是登录,所以会看到有2个登录的接口,最后是挥手,但是这次没有重复的挥手,握手的过程,而是只进行了一次握手和挥手动作,所以可以得出结论:

设置为false时,不会重复的挥手和握手,这个对于性能的提升是有显著影响的。

但是由于这个选项认设置为true,所以一般我们建议设置为false,此选项可以通过jmeter.properties来进行修改

# Reset HTTP State when starting a new Thread Group iteration which means:
# true means next iteration is associated to a new user
# false means next iteration is associated to same user
# true involves:
# - Closing opened connection
# - resetting SSL State
#httpclient.reset_state_on_thread_group_iteration=true

翻译内容如下:

启动新线程组迭代时重置HTTP状态,这意味着:

true表示下一次迭代与新用户关联

false表示下一次迭代与同一用户关联

“true”包括

-关闭已打开的连接

-重置SSL状态

原文地址:https://www.cnblogs.com/walker20201219/p/15839109.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐