我正在使用JMeter进行API负载测试。我有一个Macbook Air(客户端),它通过以太网连接到正在测试负载(服务器)的机器上。
我想做一个简单的测试。以每秒5个请求(RPS)的速度命中服务器。我创建了一个包含60个线程的并发线程组,一个具有5 RPS的吞吐量整形计时器(持续一分钟),我的HTTP请求并点击播放按钮并运行测试。
我希望看到我的“每秒点击数”侦听器指示每秒5个点击量的平均水平,而我看到的是可变速率,从5开始,然后下降到2,然后再下降到4 ...有时指定的5 RPS(例如6 RPS)的意义在于,它不是恒定的5。它的可变速率太多了-到处都是。而且我没有任何错误。
我的服务器需要500ms到3s的时间来根据存在的负载返回答案-这就是我正在测试的内容。我想通过该测试实现的是在负载下500ms的时间内尽可能多地返回响应,但我没有得到。我必须开始怀疑这是否是JMeter的错,但这是另一天的话题。
当我用虚拟采样器替换HTTP采样请求时,我会得到想要的RPS。
我以为JMeter资源有问题,所以我将堆大小/内存更改为1GB,使用-XX:+ DisableExplicitGC和-d64标志并在CLI模式下运行。我从来没有任何错误,不是在设置标志之前,而是在设置标志之后。另外,我认为5 RPS只是一个很小的数字,所以我认为资源不会成为问题。
值得注意的是,有时线程在测试结束时开始执行,而不是在开始时执行,我发现这是非常奇怪的行为。
下一步是什么?是时候使用新工具了?