Active Record 无法在 5.000 秒内获取数据库连接

Sin*_*ary 5 mysql activerecord ruby-on-rails sidekiq

从过去几周开始,我看到此错误“无法在 5.000 秒内获取数据库连接”。我尝试过以下解决方案。

根据 Sidekiq文档,我已将并发数减少到 10,并将 MySql 数据库池大小增加到 12。但我仍然收到此错误,因此我将数据库池大小增加到 27。但问题仍然存在。尝试了这个这个答案的解决方案。我的 Sidekiq 服务器计算机没有运行任何其他可以消耗 AR 连接的进程。我不会从外部旋转任何线程。以下是我的配置

Sidekiq version - 3.4.2
Rails version - 4.2.4
Active Record version - 4.2.4
Database pool size - 27
Sidekiq concurrency - 10
Run Code Online (Sandbox Code Playgroud)

对此的任何帮助将不胜感激。

小智 -1

我怀疑这是服务器端的连接泄漏。

Sidekiq::Middleware::Server::ActiveRecord是负责在作业完成后将连接返回到池的中间件。默认情况下应包含此内容。

当您使用标志启动服务器时-v

bundle exec sidekiq -v -C config_file
Run Code Online (Sandbox Code Playgroud)

它将打印所有将被调用的中间件。你能检查一下这个中间件是否存在于列表中吗?