如何使用jmeter每秒测试10k请求?

时间:2020-06-01 12:13:39

标签: jmeter load-testing

我需要使用JMeter以10k req / sec的负载测试我的网站1小时。我对循环计数,线程数,启动周期和持续时间的值感到困惑。

我的笔记本电脑(i5 8GB)还能做到吗?如果没有,那是什么呢?

PS:为此,我检查了关于stackoverflow的每个问题/答案,但是找不到任何帮助。请不要将其重复标记为问题。

3 个答案:

答案 0 :(得分:0)

您可以使用“恒定吞吐量计时器”来定义目标吞吐量,并根据“所有活动线程”选择吞吐量。

定义脚本中的最大用户数,使其足以满足10K req / sec。

如果您使用的是Windows机器,那么我想您会遇到“ https://www.baselogic.com/2011/11/23/solved-java-net-bindexception-address-use-connect-issue-windows/”这一问题

我建议使用分布式测试或使用1台以上的计算机。

答案 1 :(得分:0)

  1. 配置JMeter每秒发送X个请求的最简单方法是将Precise Troughput TimerThroughput Shaping TimerConcurrency Thread Group结合使用。线程数量需要足够,确切的数量主要取决于您的应用程序响应时间,如果响应时间为1秒,则需要10,000个线程;如果响应时间为500ms,则需要5,000个线程,如果是2秒-您将需要20k线程,等等。
  2. 您只能回答笔记本电脑是否可以启动所需数量的虚拟用户,因为要考虑的因素太多:测试的性质,请求/响应的大小,前置/后置处理器和断言的数量,等等。请确保遵循JMeter Best Practices并使用JMeter PerfMon Plugin来监视CPU,RAM,网络等的使用,就像笔记本电脑将过载一样-JMeter将无法足够快地发送请求,您即使服务器支持,也不会每秒执行1万个请求。如果您的笔记本电脑硬件规格对于测试场景而言过低,则必须使用Distributed Testing

答案 2 :(得分:0)

您正在处理许多问题

  • 测试设计。使用多个负载生成器。实际上,使用不少于三个,并且在硬件上平均匹配。取一个,每种类型仅加载一个用户。这是您的控制集。如果此集合的降级速率与其他负载生成器的降级速率相同,则可能是一个常见问题,可能是该站点。如果控制集不会降级,而其他负载生成器会降级,则可能是发电机过载。在栅栏的商业测试工具侧,从未将一个主机产生的所有负载视为性能测试的一种好习惯。
  • 每秒
  • 10,000个请求。这是实质性的。我已经在一些排名前20位的电子商务网站上工作,我可以告诉您,即使它们没有收到到原始服务器的此类流量。为什么?快取!这可能是一个内容分发网络,其中负载分布在整个县中;或者在站点的负载均衡器(S)的正前方有一个缓存节点(等效的varnishcache东西),或者对于多阶段缓存都同时存在。当且仅当(IFF)您的目标是代表最终用户的行为时,您才可能需要在生产中寻找客观参考,以将其固定为验证点。运行来自HTTP访问日志的按秒分组的请求计数,应该能够验证该数目。另外,检查缓存计划中的固定资产-仅通过更好地管理客户端的站点缓存设置,可能会管理不善并且负载会大大下降。如果您的目标只是使SOAP / REST接口达到破坏的目的,那么您可能会有更好的路径。
  • 如果您希望将一组特定的SOAP或REST远程过程调用带到破坏点,请考虑使用经典的压力测试。在零负载下开始测试,并在尽可能长的时间内以最小的步长间隔进行增加。物理上类似于经典的医院式压力测试,护士每分钟都要走动一次,并提高速度或跑步机上的倾斜度,或者两者都增加,直到达到测试条件的某种程度。对于正在陷入氧气短缺的医院风格测试,无法跟上步伐等……对于您的应用程序/界面,响应时间可能会比可接受的时间增加一倍,有限资源池中的资源会饱和(后端主机上的CPU,磁盘,内存,网络等)。