首页 > 解决方案 > 从 t2.xlarge 检测到零星的 AWS RDS postgres 连接超时和 EOF

问题描述

db.m5.xlarge在 AWS RDS 上运行 postgres 10.6 db。2 周前,我们开始出现零星(psycopg2.DatabaseError) SSL SYSCALL error: Connection timed out的和(psycopg2.OperationalError) SSL SYSCALL error: EOF detected.

这些错误都来自在t2.xlarge实例上运行的 Docker 容器。运行20t2.xlarge个 Docker 容器,每个容器我们运行一个简单的 Python Tornado API。

当我们收到这些错误时,并不是主机上的所有容器都会收到错误,而是随机的。错误发生后,我们回滚会话(我们正在使用 sqlalchemy),错误就消失了。

我们已经尝试升级我们的数据库,在 上运行更少的容器t2.xlarge,升级到m5.xlarge但没有任何效果。

我们的数据库负载看起来很正常。

我们一直在尝试很多东西,但已经没有想法了。这可能与 AWS 限制我们t2.xlargem5.xlarge网络使用有关吗?

t2.xlarge~200-250K 网络输入/输出,以及 ~500-600 个数据包始终输入/输出。这些实例的 CPU 使用率约为 0.3。

编辑

postgres 错误日志显示了大量这样的日志

unexpected EOF on client connection with an open transaction
could not receive data from client: Connection reset by peer

所以看起来这与我们正在运行的 Tornado 服务器有关,它使用 sqlalchemy 与数据库通信。任何关于使用 sqlalchemy/tornado 从这里寻找/调试什么的提示/建议将不胜感激!

标签: postgresqlamazon-web-servicessqlalchemytornado

解决方案


推荐阅读