JMeter-每个线程中的第一个样本都很慢,并且问题每隔约210秒重复一次

问题描述

我有一个简单的JMeter实验,其中有一个包含16个线程的线程组,运行500s,每个线程每2秒点击一次相同的URL,每秒生成8个请求。我正在非GUI(命令行)模式下运行。这是.jmx文件

https://www.dropbox.com/s/l66ksukyabovghk/TestPlan_025.jmx?dl=0

这是在AWS m5ad.2xlarge / 8核/ 32GB RAM上运行的结果图(在我的PC,超大型Hetzner服务器,Neocortix Cloud Services实例上的VirtualBox Debian上,我得到相同的行为):>

https://www.dropbox.com/s/gtp6oqy0xtuybty/aws.png?dl=0

线程组开始时,所有16个线程报告较长的响应时间(0.33s),然后逐渐恢复为正常的较短响应时间(

前两个帖子似乎相关,但是没有给出“开始运行”问题的最终原因,也没有提及“开始运行回声”问题。

Jmeter - The time taken by first iteration of http sampler is large

First HTTP Request taking a long time in JMeter

我可以通过在每个线程中用第一个HTTP请求打一个不存在的页面获取404错误并过滤掉404错误解决“运行开始”问题。但这是黑客,它不能解决“运行回声开始”问题,不能保证能打到不存在的页面。并且在实际目标页面的传递负载中引入了“漏洞”。

更新:根据Dmitri T的建议,我已经安装了JMeter 5.3。它具有认值httpclient4.time_to_live = 60000(60s),并且其输出与以下内容匹配:

https://www.dropbox.com/s/gfcqhlfq2h5asnz/hetzner_60.png?dl=0

但是,如果我增加httpclient4.time_to_live = 600000(600s)的值,​​它不会将所有“回声”推到运行结束之后。它仍然显示大约220s和440s的回声,即我试图消除的原始行为。

https://www.dropbox.com/s/if3q652iyiyu69b/hetzner_600.png?dl=0

我想知道httpclient4.time_to_live的有效最大值是否在220000(220s)左右。

谢谢, 劳埃德(Lloyd)

解决方法

由于initial connection establishmentSSL handshake

,第一个请求将很慢

展望未来,JMeter将特别按照其network properties采取行动:

  • httpclient4.time_to_live-TTL(以毫秒为单位)表示绝对值。无论如何,连接都不会超出其TTL的范围而重新使用。
  • httpclient.reset_state_on_thread_group_iteration-在开始新的线程组迭代时重置HTTP状态,这意味着关闭打开的连接并重置SSL状态

似乎您使用的是已过期5年的JMeter版本,according to JMeter Best Practices you should always be using the latest version of JMeter,所以请考虑升级到JMeter 5.3(或{{3}提供的最新稳定版本) }页),因为您可能正遭受JMeter错误的困扰,该错误已得到解决。

您可能还需要执行OS和JMeter调整,请参见JMeter Downloads以获取示例问题和解决方案