间歇性无法连接到 AWS RDS 上的 mysql(错误 2003)

Posted

技术标签:

【中文标题】间歇性无法连接到 AWS RDS 上的 mysql(错误 2003)【英文标题】:Intermittently can't connect to mysql on AWS RDS (Error 2003) 【发布时间】:2014-12-20 18:37:51 【问题描述】:

我们的 mysql 服务器连接出现间歇性问题。 我们收到的错误如下。

(2003, 'Can\'t connect to MySQL server on \'<connection>\' ((2013, "Lost connection to MySQL server during query (error(104, \'Connection reset by peer\'))"))') Callstack: File "/usr/lib64/python2.7/site-packages/pymysql/connections.py", line 818, in _connect 2003, "Can't connect to MySQL server on %r (%s)" % (self.host, e)) File "/usr/lib64/python2.7/site-packages/pymysql/connections.py", line 626, in __init__ self._connect()

更多信息:

我们有一组 EC2 服务器不断运行对后端 RDS 的查询。 我们平均每秒有大约 500 个连接到 RDS 我们每天每个 RDS 大约有 0 到 4 次打嗝 打嗝不符合我们的维护窗口 当我们遇到问题时,它会影响相当多的连接 ~50 发生故障时会中断所有服务器和端口之间的连接

错误本身看起来是由 ec2 上关闭的 tcp 连接产生的。我们的 TCP 保持活动时间设置为 7200 秒,这就是触发错误的时间。

我的问题是如何追踪这些问题发生的原因?它们不经常发生很好,但根本不理想。

任何建议将不胜感激!

10/29 更新:

我一直在运行一项服务来检查我是否在 sql server 上运行了任何长进程,并且看起来这些错误并没有那么严重。永远不会为此连接创建新进程!我一直在打嗝,只是没有任何联系的迹象。

【问题讨论】:

【参考方案1】:

因此,在与亚马逊支持来回反复之后,这是我们目前的解决方案。

亚马逊通过调整 RDS 实例上的 somaxconn 值提高了我们的套接字侦听积压。

该值是默认值 128,现在已增加到 1024。

调整值后,我们不再收到丢失连接错误。

【讨论】:

你好@Zach,我遇到了类似的问题。此值是否可以通过管理控制台配置,还是我需要联系支持人员? 很遗憾,您现在需要直接联系支持人员。我被告知能够修改它在他们的积压中,但没有具体的发布日期。

以上是关于间歇性无法连接到 AWS RDS 上的 mysql(错误 2003)的主要内容,如果未能解决你的问题,请参考以下文章

无法从 SQL WORKBENCH 连接到 AWS RDS mysql

无法通过 Python Elastic Beanstalk 中的 Flask SQLAlchemy URI 连接到 AWS MySQL RDS 实例

通过 Beanstalk 部署的 Docker 容器无法连接到 RDS 上的数据库

连接到 Mysql AWS RDS 实例时工作台错误 10060

Spring Boot 连接到 AWS RDS MySQL - SSLHandshakeException:收到致命警报:unknown_ca

从 MySQL 客户端通过 AWS 堡垒主机连接到 MySQL RDS 实例