我目前正在使用Jmeter进行API性能测试,但最近我开始考虑Gatling作为Jmeter的潜在替代品。下面是我为Gatling所做的PoC,但我注意到性能结果非常不同。
设定:
其中我们在60秒内访问了一个并发用户数为10的https端点。
结果
Jmeter:10个线程(无斜升),60秒
结果:150 TPS
加特林:10个并发用户,也是60秒
结果:27个TPS(cnt/s?)
问题:
首先我想确认加特林的术语;在Gatling结果图表中,我看到一个名为“mean cnt/s”的列,我将鼠标悬停在它上面,它显示“count of event per second",我想这和Jmeter的TPS是一样的吧?
JMeter :
摘要+00:00:16中的2386 =平均值153.1/秒
"加特林"
平均计数/秒:26.652
如果上述假设是正确,那么谁能分享一下为什么Gatling的数字比Jmeter的低得多?
谢谢您!
2条答案
按热度按时间jslywgbw1#
加特林:10个并发用户,也是60秒
你知道它的作用吗?它会在现有用户每次完成时产生一个新用户,从而创建新的连接。假设一个虚拟用户完成场景需要100毫秒,你将产生101060 = 6,000个虚拟用户和同样多的连接。这真的是你想要的吗?这和你用JMeter做的是一样的吗?
如果您实际上希望相同的10个用户循环60秒,则必须注入
atOnceUsers(10)
并在场景中添加一个during(60)
循环。https://gatling.io/docs/gatling/reference/current/core/injection/#open-modelhttps://gatling.io/docs/gatling/reference/current/core/scenario/#loop-statements
wpcxdonn2#
很多事情都可能导致偏差。我假设你在负载生成器/目标示例方面使用相同的设置。你可以先从固定数量的请求开始。在Jmeter中使用循环,在Gatling中重复。总共发送60 x 10 = 600个请求。如果使用得当,Gatling将能够生成比Jmeter高得多的负载。