当使用 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 秒的响应时间太长,您可以开始调查原因,可能是:
- 您的 API 服务器只是过载,使用上述 Amazon CloudWatch 检查 CPU、RAM、网络、磁盘使用情况或 JMeter PerfMon Plugin
- 您的应用程序配置可能无法承受高负载。大多数 Web/应用程序/数据库服务器默认设置仅适用于应用程序开发和调试(同样适用于 JMeter),因此您很可能需要调整基础架构。
- 您的应用程序使用了非最佳算法。使用 profiler tools检查它在哪里花费时间,什么是“最重”的方法,数据库调用持续多长时间等。
- 此外,如果您的应用程序位于 ELB 之后,JMeter 可以缓存其中一个入口节点的 IP 地址,并且您的所有请求都将只命中一台主机。为避免这种情况,请添加 DNS Cache Manager到您的测试计划。
引用资料:
关于api - API 性能测试摘要报告中的 AWS cloudwatch "Latency"指标和 jmeter "Average"指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46346553/