如何在一秒钟内发送4000多个请求?[英] How to send 4000+ requests in exactly 1 second?

问题描述

我有一个HTTP GET request.我需要在1秒钟内将请求发送到应用程序服务器超过4000.

我正在使用Jmeter发送这些请求.我每次使用Sniffer工具(Wireshark)每次都采用空灵的痕迹.

我试图从一台计算机,多台机器(并行)甚至分布式模式中实现这一目标.

实际上,jmeter结果在这里不是我关注的问题.该测试的关注点是看到4000请求在Sniffer工具上击中服务器.

.

我在使用以下Jmeter测试计划时在1 sec中几乎在1 sec中找到了请求.

Number of Threads= 4000
Ramp-Up Periods = 0 (Though it is depricated)
Loop count= 1

当我使用2500的线程数时,我几乎2200 request在空灵跟踪中击中服务器.

服务器的响应此请求不是我关注的问题.我只想确保4000 JMeter发送的请求在一秒钟内击中应用程序服务器.

更新:

案例1:(4000线)

Number of Threads= 4000
Ramp-Up Periods = 0 
Loop count= 1

案例1的输出:

jmeter(表中查看结果):2.225秒开始4000请求.

空灵跟踪:4000秒击中服务器的请求.

在此处输入图像说明

案例2:(3000线)

jmeter(表中查看结果):1.83秒开始3000请求.

空灵跟踪:1.57秒,用于触及服务器的3000个请求.

案例3:(2500线)

jmeter(表中查看结果):1.36秒开始2500个请求.

空灵跟踪:2.37秒击中服务器.

案例4:(2000线程)

jmeter(表中查看结果):0.938秒开始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结果和空灵痕迹彼此不同.我还尝试了 Synchronizing Timer 以实现这种情况.

由于4000个线程太重,也许我必须在分布式模式下对其进行测试.我还尝试了分布式模式(1个主人,2个奴隶).也许我的脚本错了.

是否可以在空灵跟踪中看到我的4000请求在1秒内触及服务器?

在分布式模式下实现此方案的Jmeter脚本是什么?

推荐答案

从正确配置服务器以避免使用此类负载时,如何开始.请求可以是任何类型的.如果它们是静态请求的,则可以确保由于缓存策略或体系结构(例如

),这些击中原始服务器的绝对最小数量
  • 如果您有返回的用户并且没有CDN,请确保您的缓存策略在客户端存储,并以您的构建时间表到期.这避免了返回访客的重复请求
  • 如果您没有返回的用户,也没有CDN,请确保将您的缓存策略设置为至少120%的最大页面,以便在您的日志中可见到给定用户集的日志
  • 如果您有CDN,请确保设置所有静态请求标头,301和404标头,以允许您的CDN缓存您的请求,以期到新的构建推动计划.
  • 如果您没有CDN,请考虑一个模型,将所有静态资源放在专用服务器上,该服务器上的所有服务器上的所有内容都标记为在高级别上在客户端上缓存.您还可以从一个带有清漆或鱿鱼作为缓存代理的服务器来履行负载

我会怀疑在此高度一致的请求级别上发挥的设计问题.每秒4000个请求每小时14,400,000个请求,每24小时的请求345,600,000.

在一个过程的基础上,我还建议至少三个负载生成器:两个用于主加载的负载,一个用于单个虚拟用户的控制虚拟用户|线程为您的业务流程.在一个负载生成器上的所有型号中,您没有控制元素来确定负载生成器的潜在过载所施加的开销.控制元件的使用将帮助您确定在驾驶负载时是否有负载发生器施加偏斜.从本质上讲,您有一个资源疲惫,正在增加负载生成器的速度中断.在负载生成器上进行故意的下载理念.当有人因缺乏控制元件而攻击您的测试时,添加另一个负载生成器比政治资本的费用便宜,然后您需要重新进行测试.它的价格要比追逐看起来很慢的系统的工程幽灵便宜得多,但实际上是一个超载的负载发生器

其他推荐答案

您想坚持使用Jmeter吗? 否则 httperf 是一个体面的工具,易于使用:

httperf --server=www.example.com --rate=4000 --num-conns=4000

例如.

希望这有点有帮助,尽管不是您所要求的.

其他推荐答案

考虑将您的http请求放在同步计时 - 您可以确定您的请求在同一时刻开始启动.

也有4000个线程是一个非常"重"的负载%e2%80%9COUT-MEMORY%E2%80%9D-Failure" rel =" nofollow"> 9 jmeter负载测试的简单解决方案"不记忆"失败指南从Jmeter中获得最大的性能实例.

本文地址:https://www.itbaoku.cn/post/978719.html