【发布时间】:2014-03-31 23:09:28
【问题描述】:
在运行 Sidekiq 几个小时后,我看到一堆作业以 Mysql2::Error: This connection is in use by: #<Celluloid::Thread:0x0000000d1b56e0 sleep> 失败。似乎 Sidekiq 线程在 MySQL 连接池上存在某种冲突。
concurrency 在 sidekiq.yml 中设置为默认 25,在 database.yml 中池为 28。没有长期存在的查询,异常发生在标准的 finder 调用中,没什么特别的。
如何防止此错误以确保作业顺利运行?
【问题讨论】:
-
您使用的是什么服务器?独角兽?这是在开发或生产中发生的吗?
-
它是一个独立的 Sidekiq 处理器服务器。是的,生产。
-
您是否仅将此数据库用于此工作人员?因为如果您将同一个数据库用于另一个进程,您需要查看您的数据库获得了多少连接
-
不,它也被 Rails 应用服务器使用(工作正常),但我假设错误是在谈论 Sidekiq 进程中的另一个线程。
标签: mysql multithreading ruby-on-rails-4 database-connection sidekiq