首页 > 解决方案 > Active Record 无法在 5.000 秒内获得数据库连接

问题描述

从最近几周开始,我看到了这个错误“在 5.000 秒内无法获得数据库连接”。我尝试了以下解决方案。

根据 Sidekiq Docs,我已将并发数减少到 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

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

标签: mysqlruby-on-railsactiverecordsidekiq

解决方案


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

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

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

bundle exec sidekiq -v -C config_file

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


推荐阅读