Performance JMeter:更多的HTTP请求会提高性能吗?
我试图理解Jmeter测试中的性能显著提高 在多租户数据库环境中,我有一个单一的RESTful服务测试,其中包含一个线程组和一个发布XML负载的HTTP请求采样器。然后通过存储过程评估XML有效负载,并收到一个响应,说明声明是否合格。我在Apache7环境中从一个.bat文件(非gui模式)运行此测试,并运行一个JVM 测试线程组属性Performance JMeter:更多的HTTP请求会提高性能吗?,performance,jmeter,Performance,Jmeter,我试图理解Jmeter测试中的性能显著提高 在多租户数据库环境中,我有一个单一的RESTful服务测试,其中包含一个线程组和一个发布XML负载的HTTP请求采样器。然后通过存储过程评估XML有效负载,并收到一个响应,说明声明是否合格。我在Apache7环境中从一个.bat文件(非gui模式)运行此测试,并运行一个JVM 测试线程组属性 # of Threads: ${__P(test.threads,200)} Ramp-Up Period: ${__P(test.rampup,1)} Loop
# of Threads: ${__P(test.threads,200)}
Ramp-Up Period: ${__P(test.rampup,1)}
Loop Count: Forever
Delay Thread: Enabled
Scheduler: Enabled
Duration: ${__P(test.duration,1800)}
HTTP请求
Method: POST
https://serverName:port/database/.../${__P(tenant,1111)}/Claim/${__property(contractId)}
当我在TG中复制HTTP请求采样器并在URL中更改租户ID时,出于某种原因,性能似乎提高了>55%。(即#索赔/秒增加了55%)似乎测试没有失败,因此我不能将性能增加归因于错误率的增加
如果我启用了另一个JVM,让负载平衡器执行优化,我会期望增加,但事实并非如此。(仍然只使用1个JVM)
HTTP请求1
https://serverName:port/database/.../${__P(tenant,1111)}/Claim/${__property(contractId)}
HTTP请求2
https://serverName:port/database/.../${__P(tenant,2222)}/Claim/${__property(contractId)}
这里的理论是Jmeter为多个请求生成工作负载的速率高于单个请求。我很怀疑,但还没有找到任何“可靠”的证据来支持我的怀疑
这个理论是真的吗?如果是这样,为什么两个HTTP请求会提高性能?您如何衡量性能?根据您的“理论”,您的测量包括jmeter开销,这是错误的。此外,这两种情况的反应是否相同?我的意思是,后端在这两种情况下都做相同的工作吗 可能第一个请求返回的输出与另一个不同。可能在一个请求中生成输出的成本更高。这就是为什么您会注意到性能“提高”的原因,通常您会在x秒内完成N x重任务,而在第二种情况下,G x重任务+H x轻任务同时执行,其中
G
-同时执行更多请求?当然性能提高?没有
因此,为了全面调查正在发生的事情,您需要回顾您的测量方法。我首先比较两个请求的实际时间。简而言之:没关系
较长版本:
以下是JMeter的工作原理:
Method: POST
https://serverName:port/database/.../${__P(tenant,1111)}/Claim/${__property(contractId)}
吞吐量按请求/时间单位计算。计算从第一个样本开始到最后一个样本结束的时间。这包括样本之间的任何间隔,因为它应该表示服务器上的负载
公式是:吞吐量=(请求数)/(总时间)
因此,如果在性能良好的系统上增加负载,吞吐量应以相同的因数或线性增加
当您增加负载但吞吐量没有增加时,当您从系统获得最大性能时,这种情况称为“饱和点”。负载进一步增加将导致吞吐量下降
参考资料: