使用sidekiq的heroku redis连接问题

时间:2015-09-23 23:40:45

标签: heroku sidekiq

我正在使用Sidekiq来处理工作。我正在使用Heroku基本计划,最多允许40个连接。我的理解是每个线程最多可以有1个连接。 Sidekiq的默认线程数为25.在我看来,我永远不会超过25个连接。

但是我的redis连接错误太多了。这怎么可能?我应该减少Sidekiq工人的数量吗?或者我还能做些什么吗?我目前有这样的Procfile:

worker: bundle exec sidekiq

将它切换到此修复它吗?

worker: bundle exec sidekiq -c 10

Sidekiq是否有可能没有正确关闭连接?此外,当我得到这个"太多的连接"错误,它基本上打倒了网站 - 有没有办法让它如果失败优雅,它似乎应该做。

1 个答案:

答案 0 :(得分:0)

简短的回答是,heroku没有准确显示任何调试绊倒的连接数。自从Redis有很多工作以来,我非常喜欢把它弄清楚。

我的超时设置为零(通过> heroku redis:info确定),这基本上意味着连接无限期地保持打开状态(仪表板没有准确地显示这一点,说我真的像35那样使用10) 。

通过heroku redis连接到redis:cli然后运行>CLIENT LIST显示了许多连接/客户端可能处于TIME_WAIT状态的问题。

更改超时修复此问题:

heroku redis:timeout --seconds 60 

老实说,将其称为连接池是一个很大的不准确之处。