【问题标题】:Sidekiq jobs stuck in queue on HerokuSidekiq 作业卡在 Heroku 上的队列中
【发布时间】:2014-12-03 11:23:50
【问题描述】:

我有一个 Sidekiq 工作人员在本地运行良好,但是当部署到 Heroku 时,作业卡在队列中。我正在使用 Redis-to-go nano 并启动并运行它,并且我已将 Heroku 上的 worker 缩放到 1 并且可以看到它已启动。我只是使用默认队列——没有自定义或花哨的。这是我的代码:

config/unicorn.rb:

Sidekiq.configure_client do |config|
  config.redis = { size: 1, namespace: 'sidekiq' }
end

config/initializers/redis.rb

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

过程文件

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: bundle exec sidekiq -c 5 -v -q default

我可以看到队列中的作业,但它不像本地那样处理。非常感谢任何建议 - 谢谢!

【问题讨论】:

  • 尝试运行 heroku run console 并同步运行您的作业 SomeWorker.new.perform(some_arg),它可能会引发错误并重新安排。
  • 您好,感谢您的快速回复。在 heroku 控制台中运行执行了我预期的操作(即它生成了一个具有正确参数的新用户);但是,我看不到任何证据表明它在 Sidekiq Web UI 中有效——也就是说,它既没有被排队也没有被处理。有什么想法吗?
  • 一旦我从 heroku 控制台开始工作,出于好奇,我尝试在我的应用程序中同步运行该作业.... '传递完全相同的参数。

标签: ruby ruby-on-rails-4 heroku redis sidekiq


【解决方案1】:

您也需要将服务器配置为使用相同的命名空间。

【讨论】:

  • 嗨,迈克,非常感谢。我进入 Sidekiq wiki 的高级选项部分并找到了这个示例: Sidekiq.configure_server do |config| config.redis = { url: 'redis://redis.example.com:7372/12', namespace: 'mynamespace' } database_url = ENV['DATABASE_URL'] if database_url ENV['DATABASE_URL'] = "#{database_url }?pool=25" ActiveRecord::Base.establish_connection end end 我在配置客户端的地方输入了它,更改了我在 Sidekiq webUI 底部看到的 url 的 url,并更改了命名空间以匹配客户端命名空间。但没有运气。
【解决方案2】:

不确定到底是什么问题,但按照本教程进行了一些修改,我发现: http://manuelvanrijn.nl/blog/2012/11/13/sidekiq-on-heroku-with-redistogo-nano/

简而言之,我将配置移到了 sidekiq.rb 初始化程序中,并删除了所有 url 和命名空间信息。

require 'sidekiq'

Sidekiq.configure_client do |config|
config.redis = { :size => 1 }
end

Sidekiq.configure_server do |config|
config.redis = { :size => 4 }
end

我引用的教程链接有一个方便的计算器来确定正确的尺寸值。仍然不确定这是让我绊倒的原因,还是马克的回答中提到的命名空间冲突的某个版本。

另外,我没有使用本教程的 sidekiq.yml 部分,因为 sidekiq wiki 说新版本的 rails 不喜欢它。相反,我在 Procfile 的 bundle exec 命令中将并发设置为 2,如下所示:

worker: bundle exec sidekiq -c 2  

希望这对以后遇到类似问题的人有所帮助!感谢所有试图提供帮助的人。

【讨论】:

    【解决方案3】:

    只需在此处添加我的两分钱:就我而言,我忘记将队列的名称添加到 config/sidekiq.yml =]

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 2011-08-30
      • 2018-06-29
      相关资源
      最近更新 更多