对于 AWS 的 API Gateway,我的理解是集成延迟应始终小于延迟(请参阅Amazon API Gateway 维度和指标)。
但是,当我比较两者时,我总是得到相反的顺序。无论我查看 API Gateway 控制面板还是查看 Amazon CloudWatch 中的指标,情况都是如此。一些示例(我的流量很少,无法比较各个数据点)
1. 2024-01-23 18:15 UTC: Integration Latency = 1235ms vs Latency = 628ms
2. 2024-01-23 14:20 UTC: Integration Latency = 1582ms vs Latency = 802ms
3. 2024-01-23 8:35 UTC: Integration Latency = 1207ms vs Latency = 614ms
由于差距很大并且始终处于“错误”顺序,我不得不假设我对 API Gateway 指标的理解是不正确的。但如何呢?
在上述所有 3 个示例中,我的 Lambda 函数花费了约 450 毫秒(+/- 35 毫秒)。通过 lambda 函数的“监视器”>“持续时间”图及其 CloudWatch 日志。
所以基本上实际指标没有问题,但它们的显示方式没有问题。
问题是当请求传入时有两个 API 调用:OPTIONS 和 POST。只有后者具有集成延迟,而前者具有接近于零的延迟。
为了具体说明这一点,假设收到一个请求,OPTIONS 需要 10 毫秒(总延迟,无集成延迟),然后 POST 需要 1000 毫秒(延迟和集成延迟;延迟更多,但差异可以忽略不计)。
API 网关 > 仪表板图表显示 两个 API 调用的平均值。因此,您会在图表中看到 (10ms + 1000ms) / 2 = 505ms 延迟,但只有 1000ms / 1 = 1000ms 集成延迟。因此,集成延迟看起来更大(大约是两倍),尽管事实并非如此。
如果您想确认这一点,请导航到这些 API Gateway 仪表板图表,然后单击“在 CloudWatch 中查看”。然后从“行”更改为“数据表”。此时,即使您查看“Max”列的值,数据也存在相同的平均问题。您仍然需要将“统计”从“平均”更改为“最大值”。只有这样,“Max”列才会显示延迟确实大于或等于集成延迟。
希望对有同样困惑的人有帮助!
(仅供参考,我只是通过在 AWS 上打开支持案例才理解了这一点。感谢他们打破了这一点。)