微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sidekiq卡在空闲模式下Heroku

如何解决Sidekiq卡在空闲模式下Heroku

我在Heroku上的生产环境中运行的Rails服务器出现问题。就在最近,我的Sidekiq作业已经停止处理,并且Sidekiq似乎陷入了某种“闲置”状态:

enter image description here

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

相关版本控制:

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中通过RedisToGo运行的Redis版本使用的是Redis 3.2,而不是我的Gemfile中的4.2.0。

我最终通过检查Heroku日志来解决这个问题,当然,我应该早点做一下。重新启动测功机时,出现类似this one的错误。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。