关于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状态

相关文章

Jmeter:Authenticationcredentialswerenotprovided上次在使...
初次使用jmeter时,结果树中返回的数据为未转码内容,如下:...
jmeter默认语言设置: 1、临时设置:进入options--ChooseLa...
第一步:打开jmeter工具。 第二步:点击鼠标右击,点击添加...
在之前的博文中,Jmeter二次开发——基于Java请求,已介绍了...
打开虚拟机然后用远程连接工具SSH连接到数据库将serveragent...