当前位置: 首页 > 知识库问答 >
问题:

负载测试相同的APIendpoint时,平均响应时间差异很大,使用Jeter进行相同负载的测试

周兴朝
2023-03-14

我正在使用 JMeter 来测试 API endpoint的性能。应用的线程数(用户)为 100。当我第一次执行测试时,平均响应时间为 35345 毫秒,对于同一 API 终结点上具有相同线程数的所有后续测试,平均响应时间约为 4705 毫秒。

平均响应时间差异如此之大的原因是什么?JMeter 是否在第一次测试中缓存任何文件,并在所有后续测试中使用相同的缓存文件?如果是,我该如何避免这种情况?

我是JMeter的新手,在这方面的任何帮助将不胜感激。

共有1个答案

曹凯泽
2023-03-14

JMeter在API测试时不缓存任何东西,它有HTTP缓存管理器,可以在处理嵌入式资源时代表浏览器缓存,如图像、脚本和web测试时的样式(模拟真实浏览器发送的HTTP请求),但这不是你的情况。

因此,我的期望是,它是测试端应用程序的一部分,即它需要“预热”自己的缓存,并且由于第一次访问时组件的延迟初始化,前几个请求的处理时间更长。

所以我的建议是:

  • 确保使用合理的爬坡期,以便负载逐渐增加,这样您就可以将响应时间,每秒命中数等主要指标与增加的负载相关联
  • 从操作系统的角度监控您正在测试的应用程序的运行状况,即CPU,RAM,交换消耗等。您可以使用JMeter性能管理器插件来实现这一点
  • 使用与应用程序相关的分析工具来检测“繁重”方法、长时间运行的数据库查询等。
 类似资料:
  • 嗨,由于我不知道负载测试,我在学习时有疑问。希望如果它是一个无效的也请让我帮助。 在jmeter中,我们可以简单地记录并正确地进行负载测试。如果是这样的话,如果我从我的客户端加载一些未知的应用程序,可能会导致服务器崩溃。然后,如果未知人员负载测试的服务器崩溃,他们该怎么办。 有没有什么具体的事情要做负载测试,或者只是我们可以在任何网站上做负载测试。请让我知道这件事,即使我的查询也不是有效的……提前

  • 我们目前对应用程序的负载测试是使用jMeter完成的,到目前为止运行良好。我们有三个不同的线程组,可以通过命令行标志分别启用和配置。还可以从命令行配置线程数和目标吞吐量。 我正在寻找的是为每个线程组编程负载场景的可能性。通常jMeter启动所有线程,然后尝试达到其目标吞吐量速率。我想要实现的如下:我配置目标吞吐量速率为每秒500个请求,启动速率为20,增量为20,持续时间为5分钟。jMeter应该

  • 我如何负载测试一个同时有300个用户使用jmeter的登录页面(而不是一个又一个用户。同时有300个用户登录)?线程组的设置应该是什么?

  • 我制作了一些PHP脚本,我想测试JMeter中同时用户的响应时间。此脚本在很短的时间(50毫秒)内运行。 我想做的是模拟1到50个用户的负载测试,其中每个用户(线程)无限期地重复请求。首先我们将有一个用户,在两个同时的用户之后,在3个之后。。。等等 我正在尝试这样做,但我有一个响应时间,显然没有同时的请求。 使用HP loaddrunner,我们可以为每个线程定义迭代次数,这在JMeter中是否可

  • 我有一个spring-boot应用程序,它有一个后endpoint,接收请求并将其发送到另一个服务,然后获取响应并将其保存到mongo数据库,然后将响应返回给用户。该应用程序部署在spring boot的嵌入式tomcat上。我使用jmeter查看最大响应时间、吞吐量等。 当我用500个线程从jeter运行测试10分钟时,我的最大时间约为3500毫秒。当我从jeter重复测试时,最大时间会减少到9

  • 我目前在AWS中使用Gatling加载测试我的服务。我使用HTTP做了几次负载测试,我的服务工作得很好。没有TLS握手错误。当我们移动到HTTPS时,负载测试结果显示TLS握手超时异常到处都是,最后因为未处理的请求排队而抛出OOM。 其他信息: Gatling场景如下:发送三个请求,然后使用头发送一个请求。我想模拟发送三个保持活动状态的请求,并在最后关闭它 我的服务由Kubernetes管理 我所