我有一个HTTP GET请求
,需要在1秒钟内精确地将请求发送给应用服务器超过4000
次。
我正在使用JMeter发送这些请求。 我每次使用嗅探工具(Wireshark
)对每个测试进行网络抓包分析。
我已经尝试了单台机器、多台机器(并行)甚至分布式模式来实现这一点。
实际上,JMeter的结果并不是我关心的重点。 这个测试的重点是查看嗅探工具中是否有4000
个请求在1秒钟内访问了服务器。
使用以下JMeter测试计划时,在ethereal中发现了近似2500
个请求在1秒
内。
Number of Threads= 4000
Ramp-Up Periods = 0 (Though it is depricated)
Loop count= 1
当我使用线程数为2500
时,在Ethereal跟踪中,我几乎在一秒钟内收到了2200个请求
。
这里我不关心服务器对该请求的响应。我只想确保JMeter
发送的4000个请求
在一秒钟内命中应用程序服务器。
更新:
情况1:(4000个线程)
Number of Threads= 4000
Ramp-Up Periods = 0
Loop count= 1
第1个测试结果:
JMeter(查看表格结果):启动4000个请求需2.225秒。
Ethereal跟踪:4000个请求到达服务器需要4.12秒。
第2个测试结果(3000个线程):
JMeter(查看表格结果):启动3000个请求需1.83秒。
Ethereal跟踪:3000个请求到达服务器需要1.57秒。
第3个测试结果(2500个线程):
JMeter(查看表格结果):启动2500个请求需1.36秒。
Ethereal跟踪:2500个请求到达服务器需要2.37秒。
第4个测试结果(2000个线程):
JMeter(查看表格结果):启动2000个请求需0.938秒。
Ethereal跟踪:2000个请求到达服务器需要1.031秒。
I have run these test from only one machine.
No listeners added.
Non-Gui mode.
No assertions in my scripts.
Heap size: 8GB
所以,我不明白为什么我的JMeter结果和ethereal跟踪不同。我已经尝试使用“同步计时器”来实现这个场景。
由于4000个线程太重了,也许我得在分布式模式下测试。我也尝试了分布式模式(1主2从)。也许我的脚本有问题。
在ethereal跟踪中是否可以看到我的4000个请求在1秒钟内命中服务器?
在分布式模式下,如何编写JMeter脚本以实现此场景?
500000
。我根据此文档中的计算设置了这个值。我的机器内存为16GB
。 - Masud Jahan