我们使用的是无服务器架构、AWS Lambda和API网关。lambda的执行时间为几毫秒。客户端的最终响应以秒为单位()(这远远超过lambda的执行时间,即使考虑到冷启动方案也计算了init持续时间)。
在使用API网关日志进行调试时,在几秒钟内存在集成延迟,这使得端到端响应相当慢。为了消除init持续时间或冷启动,我在CloudWatch中添加了一些规则,用于定期调用lambda以保持它们的温暖。
init持续时间被完全删除,这也有助于减少集成延迟。有些Lambdas无法调度,因为调用它们需要身份验证,为此,我增加了配置的并发性5。
此Lambda在日志中也具有init持续时间。Lambda供应是另一种摆脱冷启动的选择,但这不会影响到在API网关上可以获得Lambda的响应的时间。
我按照下面的链接为Lambdas分配了提供的并发:
我已将供应添加到Lambda的CloudWatch日志中:
Duration: 1331.38 ms Billed Duration: 1332 ms Memory Size: 256 MB Max Memory Used: 130 MB Init Duration: 1174.18 ms
我可以在API和Lambda日志中注意到的一件事是,对lambda的请求是从2021-02-15T11:51:36.621+05:30的API发送的,但是,它是在2021-02-15T11:51:38.535+05:30的Lambda上收到的。在Lambda收到请求有大约2秒的延迟时间。
AWS X射线追踪

我已经为API网关和Lambda启用了AWS日志记录,这就是我通过跟踪得到的。这一请求总共花费了595毫秒,但邮递员在1558毫秒时收到了答复。从哪里增加大约1秒的延迟到接收来自API网关的响应?

发布于 2021-02-12 16:46:57
我相信原因是5的配置并发是不够的,而且您仍然会遇到Lambda函数的冷启动。这意味着如果外部服务正在调用您的API端点(即API网关后面的Lambda函数),则您的Lambda函数具有5个实例。如果我们假设Lambda函数可以每秒处理2个请求(每次调用500 10 ),那么您可以使用Lambda函数每秒处理10个请求。如果外部服务每秒发出20个请求,AWS Lambda会尝试旋转新实例,因为现有实例正忙于处理请求。这会导致外部服务由于功能的冷启动而经历较高的响应时间。
另外,考虑到Lambda函数的实例不是“永远”存在的,而是在某个点之后被清理干净的。也就是说,如果您在交通模式中经历了许多尖峰,那么这可能意味着在一个高峰之后,实例活了15分钟,然后AWS Lambda关闭它们,只保留5个供应的实例,如果又出现了另一个高峰,您将看到与前面相同的问题。
请注意:,这是对幕后发生的事情的一个非常简单的解释--更好的猜测是基于您的描述。如果您提供一些示例数字(例如init持续时间、执行持续时间、响应时间),或者提供一些示例代码,说明您在Lambda函数中所做的事情,这将有所帮助。另外:您使用的是哪个运行时?你的交通模式怎么样?
潜在解
发布于 2022-05-15 08:19:03
=====服务流=====
API⮕Lambda函数(提供)
=====查询=====
您希望了解为什么在处理从API到Lambda函数的请求时存在延迟。
===== -CW =====时间戳
021-02-15T11:51:36.621+05:30 2021-02-15T11:51:38.535+05:3 Lambda持续时间: 1331.38 ms记帐时间: 1332 ms内存大小: 256 MB使用的最大内存: 130 MB Init持续时间: 1174.18 ms
=====后续问题=====
虽然请求是通过API到Lambda函数处理的,但是执行env占用了1174.18 ms(1.1s)部分来激活&在剩下的0.3s中执行您的代码,这使得它总共有1.4秒的时间。
问:您使用的处理器类型是什么?API的类型&端点类型?
===== K.C =====
=====复制观测=====
没有提供的并发性。
有准备的并发。
我在美国西部2号区域,从离该地区12,575公里处打电话请求。我有一个REST,它被配置为'Regional‘端点类型。Lambda函数运行在基于x86处理器的x86_64 -64位x86体系结构上.
-检查是否优化了Lambda函数代码-为了降低延迟,您可以使用“边缘”优化的Rest API.An边缘端点-优化的API端点对地理分布的客户端是最好的。API请求被路由到最近的CloudFront存在点(POP)。--选择最接近交通发达地区的地区。
-参考资料:
new-provisioned-concurrency-for-lambda-functions provisioned-concurrency.html#optimizing-latency
https://stackoverflow.com/questions/66174999
复制相似问题