【发布时间】:2020-06-04 20:06:18
【问题描述】:
我们一直在使用 Aurora 无服务器数据库在 AWS Lambda / API Gateway 之外运行我们的生产 Web 应用程序。一年多来事情一直顺利进行,但最近(与高峰使用期的增加相吻合)我们经历了暂时的缓慢,在最坏的情况下,由于某种瓶颈导致数量激增而无法使用数据库连接数以及来自我们两个 API 的 4XX 和 5XX。
我们使用 serverless-mysql 库来执行查询和管理数据库连接。
已消除的问题的一些潜在原因:
- 没有长时间运行的查询锁定表或任何类似的东西(如 MySQL 中的
show full processlist所示),实际上根据我们的slow_log,没有查询运行时间超过 1 秒 - 所有对
await serverlessMysql.query()的调用都紧跟await serverlessMysql.end() - 我们的数据库管理器类在 Lambda 处理程序之外实例化,因此不会在每次重用 Lambda 实例时重新实例化
- 我们调整了 serverless-mysql 的配置选项,这样重试就不会那么激进了。默认配置使其在重试连接时非常激进,无论是频率还是重试次数。这肯定有帮助,但并没有消除问题。
我可以发布哪些详细信息可以帮助某人诊断此问题?真是让人头疼。
【问题讨论】:
-
来自无服务器生产实例的其他信息请求。 RAM 大小、# 核心、MySQL 主机服务器上的任何 SSD 或 NVME 设备?在 pastebin.com 上发布并分享链接。从您的 SSH 登录根目录中,文本结果为:B) SHOW GLOBAL STATUS;至少 24 小时正常运行时间后 C) 显示全局变量; D) 显示完整的处理程序;为服务器工作负载调优分析提供建议。
标签: aws-lambda aws-serverless aws-aurora-serverless