我们的 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 上运行,看起来这些错误并没有那么严重。永远不会为此连接创建新进程!我仍然收到打嗝,只是没有连接的迹象。
最佳答案
因此,在与亚马逊支持人员来回交流之后,我们找到了目前的解决方案。
Amazon 通过调整 RDS 实例上的 somaxconn 值增加了我们的套接字监听积压。
该值是默认值 128,现已提高到 1024。
调整值后,我们不再收到“丢失连接”错误。
关于mysql - 间歇性无法连接到 AWS RDS 上的 mysql(错误 2003),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26556130/