在运行Sidekiq几个小时后,我看到一堆作业因Mysql2::Error: This connection is in use by: #<Celluloid::Thread:0x0000000d1b56e0 sleep>
而失败。似乎Sidekiq线程在MySQL连接池上存在某种冲突。
concurrency
在sidekiq.yml中设置为默认值25,在database.yml中池为28。没有长期存在的查询,标准查找程序调用中会发生异常,没什么特别的。
如何防止此错误以确保作业顺利进行?
答案 0 :(得分:0)
您的问题是由于sidekiq获得了与您的数据库的所有连接,同时rails应用程序也请求连接。
你有25名sidekiq工作人员,但你有多少铁路服务器?
e.g。如果你有独角兽跑4个童工你需要29个插槽(至少)
答案 1 :(得分:0)
最后通过隔离所有工人来解决这个问题。它归结为Typhoeus图书馆显然不是线程安全的。替换为Net / HTTP,它再次有效。
https://github.com/mperham/sidekiq/issues/1400#issuecomment-45838886
的更多详情答案 2 :(得分:0)