【发布时间】:2012-07-29 12:38:45
【问题描述】:
我想通过在同一毫秒内点击几百次来加载测试一个 URL。我尝试了 JMeter,但我可以在同一毫秒内达到 2 个请求。这似乎是我的机器无法足够快地创建线程的问题。有什么解决办法吗?
【问题讨论】:
-
使用异步请求。您正在对自己进行压力测试。
标签: jmeter load-testing stress-testing
我想通过在同一毫秒内点击几百次来加载测试一个 URL。我尝试了 JMeter,但我可以在同一毫秒内达到 2 个请求。这似乎是我的机器无法足够快地创建线程的问题。有什么解决办法吗?
【问题讨论】:
标签: jmeter load-testing stress-testing
在 JMeter 中,您可以使用同步计时器将其设置为 100,这样所有线程都会等待,直到有 100 个可用并访问服务器:
另一种解决方案是增加线程数,以便达到此吞吐量。 在 JMeter 的下一个版本(2.8)中,您将能够按需创建线程(在需要时创建)。 无论如何,在同一毫秒内点击几百次是一个高负载,因此您必须正确调整 JMeter。
问候
菲利普
【讨论】:
JMeter 使用阻塞 HTTP 客户端,为了在 100 个请求的同时访问服务器,您需要 JMeter 中的 100 个线程。即使提供了这一点,您仍然没有 100 个内核来同时实际运行此类代码。即使你有 100 个内核,启动一个线程也需要一些时间,所以你必须提前启动它们并在某种障碍上同步。这在 JMeter 中不受支持。
为什么你真的想“在同一毫秒”运行你的服务器?一个普通的负载测试只是用尽可能多的连接调用服务器,但不一定同时。此外,有时您甚至会在请求之间添加随机睡眠来模拟所谓的思考时间。
【讨论】:
根据 Philippe 的回答,JMeter 实际上支持同步请求。但也许对于你想要的东西,比如 Apache Bench 使用 -c100 (或将其调整为任何工作)是一个更好的选择?这是非常基本的东西,但是开销要小得多,这在这种情况下可能会有所帮助。
但我也会从 Tomasz 的回答中窃取并回应他的担忧,即这可能不是真正进行负载测试的最佳方式。如果你想复制现实生活中的流量,那么你真的需要这么高的并发性吗?
【讨论】:
您需要使用 Jmeter-server 和大量客户端计算机来生成负载。你的单机不足以自己产生负载。
【讨论】: