我的rails服务器在heroku上运行时出现问题。就在最近,我的sidekiq作业停止了处理,sidekiq似乎陷入了某种“空闲”状态:
我整个上午都在网上跑来跑去,但似乎找不到任何好的资源来调试这个。如果有人能给我指出正确的方向,我会非常感激的。
相关版本控制:
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/
锡德基
:concurrency: 5
staging:
:concurrency: 10
production:
:concurrency: 10
:queues:
- [default, 1]
初始化器/sidekiq.rb
Sidekiq.configure_client do |config|
config.redis = { url: ENV["REDIS_URL"] }
end
初始化程序/redis.rb
REDIS = Redis.new(uri: URI.parse(ENV["REDIS_URL"] || "redis://localhost:6379/"))
任何帮助都将不胜感激。谢谢您!
1条答案
按热度按时间w8rqjzmb1#
好吧,我知道了。问题是在heroku中运行的redis版本(通过redistogo)使用的是redis3.2,而不是我文件中的4.2.0。
我最终通过检查heroku日志发现了这一点,当然,我应该早点这么做。当我重新启动dynos时,出现了这样的错误。
我的解决方案是将我的sidekiq降级到5.2.9版本,因为这样做比在生产中更改redis提供者更方便(redistogo还不支持redis 4)。