Cloud SQL 定期出现连接 OperationalError 的问题:(2062,‘Cloud SQL 套接字打开失败,错误:传输端点未连接’)

Cloud SQL 定期出现连接 OperationalError 的问题:(2062,‘Cloud SQL 套接字打开失败,错误:传输端点未连接’)

定期尝试连接第二代 MySQL 服务器会收到此错误:

OperationalError: (2062, 'Cloud SQL socket open failed with error: Transport endpoint is not connected')

这种情况会持续约 10 分钟,然后消失。

我发现与 Cloud SQL 相关的此错误的唯一参考是它可能与连接限制有关(https://groups.google.com/d/msg/google-cloud-sql-discuss/sdeD17oDBOQ/wtTewl4-EgAJ) 但除了一个 TaskQueue 任务之外,实例中几乎没有其他事情发生,所以我发现我们不太可能达到每个实例 12 个的限制(绝对不会达到 4k 个总体限制)。

导致此异常的代码使用与应用程序其余部分相同的数据库设置,并且只是尝试SELECT通过主键获取一行(因此是一个小查询)。

在数据库日志中有很多错误条目,如下所示。

[Note] Aborted connection 39643 to db: 'my_schema' user: 'root' host: 'cloudsqlproxy~<instance_ip>' (Got an error reading communication packets)

但我不确定它们是否相关,因为它们全天都相当持续地发生,并且上述错误仅在特定时间发生约 10 分钟。

这仅在升级到第二代 Cloud SQL 后才开始。

还有谁见过这个或者了解更多信息吗?

答案1

事实证明,这个问题的根源是连接限制,正如问题中链接的 Google 群组聊天最初所建议的那样。

出现此错误的原因是 Pipelines API 使用 webapp,而应用程序的其余部分使用 Django。由于 Django 会为我们关闭连接,因此没有代码可以手动处理它,但那些通过 webapp 并访问数据库(使用 Django 的连接代码)的路由使它们保持打开状态,最终导致达到限制。

相关内容