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

标签 mysql django amazon-web-services amazon-rds pymysql

我们的 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/

相关文章:

php - 整洁地编写 MySQL 查询以提高可读性的推荐方法是什么?

c# - 在模型和 AspNetUsers 之间加入(包含)

python - Django 开发服务器未检测到我的 html 文件中的更改

python - 通用多对多关系

amazon-web-services - 在 AWS 中启动 EC2 失败

mysql - 制作 mysqldump、gzip 并发送到 S3

Mysql计算不同行的团队排名

php - 从 MySQL 列获取数组

python - 在同一请求中使用 Django 测试客户端发布多个文件

amazon-web-services - 给定用户的身份id,如何从cognito 用户池中获取用户的详细信息?