我们有一个托管在亚马逊网络服务上的网络应用程序。我们的数据库是一个运行 5.1.57 的 multi-az RDS MySQL 服务器和 3-4 个应用程序服务器与之通信。
今天,我们开始看到很多类似“超出锁定等待超时;尝试重新启动事务”的错误——几乎 1% 的 POST 请求都看到了这一点。
网站上运行的代码没有任何修改。没有架构更改。我们的流量并没有大幅增加。我一直在查看正在运行的进程,似乎没有一个失控。
我尝试将我们的 RDS 实例从小扩展到大,但没有效果。
两天前,亚马逊发生了一些故障。作为从中恢复的一部分,我们的 RDS 服务器和我们的应用程序服务器最终位于不同的可用区,但都在同一区域内。但是昨天,一切都很好,所以我不相信这有关系。
锁定超时存在于不同类型的请求中,并且发生在不同的 InnoDB 表中。
当我们开始发现问题时,我注意到打开的连接数量猛增,但它们可能是一种症状而不是原因。
我下一步要调试什么?
可能发生的情况是支持 RDS 实例的一个或多个 EBS 卷发生 IO 丢失。由于 EBS 重镜像而减少的 IO 量对数据库的影响非常显着。
如果您为 Premium Support 付费,该团队可以为您研究类似的详细信息,或者您可以尝试在 AWS 论坛上提问。RDS 工程师可能会确认潜在的 EBS 问题或原因。