api - API 性能测试摘要报告中的 AWS cloudwatch "Latency"指标和 jmeter "Average"指标

标签 api amazon-web-services testing jmeter load

当使用 JMeter 在 AWS 中的 ELB 上对 API 进行负载/性能测试时,我看到
AWS 云观察 延迟指标 = 10 毫秒(看起来不错),在 JMeter 的摘要报告中 平均指标 = 3000 毫秒(看起来很糟糕)。

API 返回 1MB 的 JSON 数据,但我不明白为什么数字会有如此大的差异,这个 api 性能是否可以接受? 如果 SLA 规定 API 响应时间为 100 毫秒。

最佳答案

您正在研究不同的指标:

  • 延迟:JMeter 测量从发送请求之前到收到第一个响应之后的延迟。
  • 运行时间:JMeter 测量从发送请求之前到收到最后一个响应之后的运行时间。

因此延迟被包含在响应时间中,即所谓的Time To First Byte和耗时是Time to Last Byte .我的期望是您应该坚持 JMeter 报告的内容,这样您就不会对来自不同来源的指标感到困惑,JMeter 至少是开源的,因此您对指标的计算方式有信心。

如果 3 秒的响应时间太长,您可以开始调查原因,可能是:

  1. 您的 API 服务器只是过载,使用上述 Amazon CloudWatch 检查 CPU、RAM、网络、磁盘使用情况或 JMeter PerfMon Plugin
  2. 您的应用程序配置可能无法承受高负载。大多数 Web/应用程序/数据库服务器默认设置仅适用于应用程序开发和调试(同样适用于 JMeter),因此您很可能需要调整基础架构。
  3. 您的应用程序使用了非最佳算法。使用 profiler tools检查它在哪里花费时间,什么是“最重”的方法,数据库调用持续多长时间等。
  4. 此外,如果您的应用程序位于 ELB 之后,JMeter 可以缓存其中一个入口节点的 IP 地址,并且您的所有请求都将只命中一台主机。为避免这种情况,请添加 DNS Cache Manager到您的测试计划。

引用资料:

关于api - API 性能测试摘要报告中的 AWS cloudwatch "Latency"指标和 jmeter "Average"指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46346553/

相关文章:

java - StackOverflowError 因为 JSONTokener

java - 如何运行位于远程服务器上的jar

amazon-web-services - Amazon CloudFront 中的 NextJS 动态路由

android - Robolectric 2.1 和 Eclipse

java - 无法解析方法 'assertThat(int)'

javascript - 下面的代码有什么问题?

web-services - Web 应用程序 API 的用例?

api - Google youtube api v3 不返回部分 "brandingSettings"

google-app-engine - AppEngine Channel API 的 Amazon EC2 等效项是什么?

testing - TFS/VSTS 中的 CasperJS 测试结果