使用出色的Cloudwatch Log Insights服务查看

一天中的一些指标,我们能够看到通过简单的缓存在一天内节省的参数存储调用次数。在一天内,我们有 900 万次执行,其中 8,500 次是冷启动。我们在参数 加纳 数字数据 存储中存储了 4 个参数,因此我们进行了 34,000 次调用来获取参数,而不是 36,000,000 次!

这个简单的 Cloudwatch Log Insights 查询报告了 Lambda 冷启动情况

关于参数存储还有一点需要注意。我们发现偶尔会限制读取值的速度,尤其是在更新 Lambda 函数代码时。参数存储有一个启用高吞吐量模式的选项,但这需要花费一些钱。启用高吞吐量模式需要花费 0.05 美元/10,000 个请求,而不是免费的 API 请求。再一次,缓存来帮忙了,因为这每天只需花费我们 0.17 美元,这是一个很小的代价,可以消除读取机密时的限制错误

我们的 Lambda 函数需要将 webhook

路由到不同 AWS 区域中的队列。因此,与参数存储非常相似,我们将 DynamoDB 客户端缓存在处理程序外部的一个小数组中。客户端是在对某个区域的第一个请求时创建的,并在执行环境的整个生命周期内持续存在。这样可以节省大量时间,因为不必每次都重新创建客户端。

第二个针对 DynamoDB 的优化是在Yan Cui (The Burning Monk) 的这篇优秀博客文章中发现的,其中涉及为 DynamoDB 客户端连接启用 TCP keepalive。事 要想成功进行交叉销售和追加销售 实证明,较新的 nodejs AWS SDK 只需设置环境变量即可支持此功能

 

还有什么比这更简单的?

 

我们正在使用AWS SAM打包我们的函数和其他 WhatsApp 号码 部分,因此将其添加到 SAM 模板中很简单,我们看到了相同的影响Yan 在其博客文章中记录了执行时间。

返回頂端