AWS Aurora:MySQL 服务器已消失

问题描述 投票:0回答:1

我们在生产环境中拥有高负载数据库,有时(大约 0.0001%)我们会遇到有关 mysql 的错误块

我们使用 AWS RDS Aurora,目前有 1 个主副本和 2 个只读副本。 AWS 找不到他们这边的任何内容,并告诉我们这是应用程序或 mysql 配置问题。

这种情况发生在完全随机的端点中,因此我们无法专注于特定的查询或工作负载。

它们总是包含 3 个错误:

15:26:56 --> Severity: Warning  --> mysqli_select_db(): MySQL server has gone away 
15:26:56 --> Severity: Warning  --> mysqli_select_db(): Error while reading INIT_DB's response packet. PID=1442 
15:26:56 --> Unable to select database: XXXX 
php mysql amazon-rds amazon-aurora
1个回答
0
投票

我有同样的问题,我注意到TCP关闭顺序并不总是“干净”,有时有规律:

-> Quit
-> FIN ACK
<- FIN ACK
-> ACK

但大多数时候我有:

-> Quit
-> FIN ACK
<- FIN ACK
<- RST ACK
-> ACK
<- RST

出于某种奇怪的原因,Aurora 在 FIN ACK 发送一个 RST 数据包后,我猜测这会在某种程度上导致下一个 PHP 连接出现问题。

在我们的代码中,我们使用 PDO,并且有一个“显式关闭”的 Mysql 连接,将对象设置为 null,如 PDO 文档中所述: https://www.php.net/manual/en/pdo.connections.php

“要关闭连接,您需要通过确保删除对它的所有剩余引用来销毁该对象 - 您可以通过将 null 分配给保存该对象的变量来完成此操作。”

您在关闭与 Aurora 的 TCP 连接时是否观察到相同的模式?

© www.soinside.com 2019 - 2024. All rights reserved.