postgresql - 从 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.xlarge
或m5.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 从这里寻找/调试什么的提示/建议将不胜感激!
解决方案
推荐阅读
- python - 将风向字典映射到新列
- arrays - rails fields_for number_field 数组必须具有不同的值
- python - 计算有权访问文件夹 python 的用户数
- cmake - 将库从一个子模块延迟链接到另一个子模块
- django - 如何使用 Django 注释?
- javascript - JavaScript 中 PHP 变量的使用
- python - 我的“更改密码”功能不起作用,而是陷入循环
- flutter - 有人在 Flutter 中呼叫用户后,我可以发送用户通知吗?
- javascript - 如何检查一个值是否已经存在于 Javascript 中的文本字段中
- python - 从谷歌驱动器或本地存储的一个添加图像到谷歌幻灯片