我正在AWS RDS上运行db.m5.xlarge
postgres 10.6数据库。 2周前,我们开始偶发(psycopg2.DatabaseError) SSL SYSCALL error: Connection timed out
和(psycopg2.OperationalError) SSL SYSCALL error: EOF detected
。
这些错误均来自在t2.xlarge
实例上运行的Docker容器。 t2.xlarge
正在运行20个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与db进行通信。对于从此处查找或调试sqlalchemy / tornado的任何提示/建议,将不胜感激!