最终更新:我们通过找到一种无需分叉即可实现目标的方法来解决此问题。但是分叉是问题的根源。
---原帖---
我在 Rails 堆栈上运行 ruby,我们的 mysql 服务器是独立的,但与我们的应用程序服务器位于同一站点。(我们尝试将其换成具有双倍规格的不同 mysql 服务器,但没有看到任何改进。
在工作时间,我们从没有特别的查询中得到了其中的一些。
ActiveRecord::StatementInvalid: Mysql2::Error: Lost connection to MySQL server during query
大多数失败的查询都非常简单,一个查询和另一个查询之间似乎没有模式。这一切都是从我从 Rails 4.1 升级到 4.2 开始的。
我不知道该尝试什么。我们的数据库服务器全天的 CPU 使用率低于 5%。我确实收到了来自随机交互失败的用户的错误报告,因此它不是已经运行了几个小时或类似的查询,当然当他们重试完全相同的事情时。
我们的服务器由 cloud66 配置。
简而言之:我们的mysql服务器由于某种原因而消失了,但这不是因为资源不足,它也是一个全新的服务器,因为当这个问题开始时我们从另一台服务器迁移。
我有时在开发功能时也会在本地主机上发生这种情况,所以我不认为这是一个负载问题。
我们正在运行以下内容:
- 红宝石 2.2.5
- 导轨 4.2.6
- mysql2 0.4.8
更新:根据下面的第一个答案,我昨晚将我们的 max_connections 变量增加到 500,并通过确认增加
show global variables like 'max_connections';
我的连接仍然掉线,今天的第一个连接几分钟前就掉线了....
ActiveRecord::StatementInvalid: Mysql2::Error: Lost connection to MySQL server during query
我跑了select * from information_schema.processlist;
,我回来了 36 行。这是否意味着我的应用服务器当时正在运行 36 个连接?或者一个进程可以是多个连接?
更新:我刚刚设置 net_read_timeout = 60 (之前是 30 )我看看是否有帮助
更新:它没有帮助,我仍在寻找解决方案......
这是我删除凭据的 Database.yml。
production:
adapter: mysql2
encoding: utf8
host: localhost
database:
username:
password:
port: 3306
reconnect: true