JMeter负载测试

JMeter负载测试,jmeter,load-testing,stress-testing,Jmeter,Load Testing,Stress Testing,我想通过在同一毫秒内点击几百次来加载测试URL。我尝试了JMeter,但我可以在同一毫秒内达到2个请求。这似乎是我的机器不能足够快地创建线程的问题。这个问题有什么解决方案吗?JMeter使用阻塞HTTP客户端,为了在100个请求的同时命中服务器,您需要JMeter中的100个线程。即使这样,您仍然没有100个内核来同时运行这样的代码。即使您有100个内核,启动线程也需要一些时间,因此您必须提前启动它们并在某种屏障上进行同步。这在JMeter中是不受支持的 为什么你真的想“以同样的毫秒”运行你的服

我想通过在同一毫秒内点击几百次来加载测试URL。我尝试了JMeter,但我可以在同一毫秒内达到2个请求。这似乎是我的机器不能足够快地创建线程的问题。这个问题有什么解决方案吗?

JMeter使用阻塞HTTP客户端,为了在100个请求的同时命中服务器,您需要JMeter中的100个线程。即使这样,您仍然没有100个内核来同时运行这样的代码。即使您有100个内核,启动线程也需要一些时间,因此您必须提前启动它们并在某种屏障上进行同步。这在JMeter中是不受支持的


为什么你真的想“以同样的毫秒”运行你的服务器?普通的负载测试只是使用尽可能多的连接调用服务器,但不一定同时调用。此外,有时您甚至会在请求之间添加随机睡眠,以模拟所谓的思考时间。

JMeter使用阻塞HTTP客户端,以便使用100个请求在同一时间命中服务器,您需要JMeter中的100个线程。即使这样,您仍然没有100个内核来同时运行这样的代码。即使您有100个内核,启动线程也需要一些时间,因此您必须提前启动它们并在某种屏障上进行同步。这在JMeter中是不受支持的


为什么你真的想“以同样的毫秒”运行你的服务器?普通的负载测试只是使用尽可能多的连接调用服务器,但不一定同时调用。此外,有时您甚至会在请求之间添加随机睡眠,以模拟所谓的思考时间。

在JMeter中,您可以使用同步计时器将其设置为100,这样所有线程都将等待,直到有100个可用线程并点击服务器:

另一个解决方案是增加线程数,以达到这个吞吐量。 在下一个JMeter版本(2.8)中,您将能够按需创建线程(根据需要创建)。 无论如何,在同一毫秒内敲击几百次是一个高负载,所以您必须正确地调整JMeter

问候


Philippe

在JMeter中,您可以使用同步计时器将其设置为100,这样所有线程都将等待,直到有100个可用线程并点击服务器:

另一个解决方案是增加线程数,以达到这个吞吐量。 在下一个JMeter版本(2.8)中,您将能够按需创建线程(根据需要创建)。 无论如何,在同一毫秒内敲击几百次是一个高负载,所以您必须正确地调整JMeter

问候


Philippe

根据Philippe的回答,JMeter实际上支持同步请求。但是对于你想要的东西,比如使用-c100(或者将它调整到任何可行的方式)是更好的选择吗?这是非常基本的东西,但是开销要小得多,这在这种情况下可能会有所帮助


但我也会从Tomasz的答案中吸取教训,并回应他的担忧,即这可能不是进行负载测试的最佳方式。如果您试图复制现实生活中的流量,那么您真的需要如此高级别的并发吗?

根据Philippe的回答,JMeter实际上支持同步请求。但是对于你想要的东西,比如使用-c100(或者将它调整到任何可行的方式)是更好的选择吗?这是非常基本的东西,但是开销要小得多,这在这种情况下可能会有所帮助


但我也会从Tomasz的答案中吸取教训,并回应他的担忧,即这可能不是进行负载测试的最佳方式。如果您试图复制现实生活中的流量,那么您真的需要如此高级别的并发性吗?

您需要使用Jmeter服务器和大量客户机来生成负载。单台计算机不足以自行生成负载。

您需要使用Jmeter服务器和大量客户端计算机来生成负载。单台计算机不足以自行生成负载。

使用异步请求。您正在进行压力测试。请使用异步请求。你在对自己进行压力测试。