Sidekiq 陷入空闲模式(Heroku)

Sidekiq Stuck in Idle Mode (Heroku)

我的 Rails 服务器在 Heroku 上生产 运行 时遇到问题。就在最近,我的 Sidekiq 作业停止处理,Sidekiq 似乎陷入某种 'idle' 状态:

我整个上午都在网上 运行,但我似乎找不到任何好的资源来调试它。如果有人能指出我正确的方向,我将不胜感激。

相关版本:

Ruby    '2.5.8'
Rails   '5.2.4.4'
Sidekiq '6.1.2'
Redis   '4.2.0'

相关配置变量:

REDIS_PROVIDER=REDISTOGO_URL
REDISTOGO_URL=redis://redistogo:[secret]@crestfish.redistogo.com:11137/
REDIS_URL=redis://redistogo:[secret]@crestfish.redistogo.com:11137/

Sidekiq.yml

:concurrency: 5
staging:
  :concurrency: 10
production:
  :concurrency: 10
:queues:
  - [default, 1]

initializers/sidekiq.rb

Sidekiq.configure_client do |config|
  config.redis = { url: ENV["REDIS_URL"] }
end

initializers/redis.rb

REDIS = Redis.new(uri: URI.parse(ENV["REDIS_URL"] || "redis://localhost:6379/"))

如有任何帮助,我们将不胜感激。谢谢!

好的,我明白了。问题是 Heroku 中的 Redis 版本 运行(通过 RedisToGo)使用的是 Redis 3.2,而不是我的 Gemfile 中的 4.2.0。

我最终通过检查 Heroku 日志发现了这一点,当然,我应该早点这样做。当我重新启动我的测功机时,我收到了类似 .

的错误

我的解决方案是将我的 Sidekiq 降级到版本 5.2.9,因为这样做比在生产中更改 Redis 提供程序更方便(RedisToGo 尚不支持 Redis 4)。