İki gün boyunca, kahramanca üretim ortamında sidekiq çalışmasıyla uğraşıyorum. Benzer konularla ilgili mevcut tüm belgeleri okudum ve hala çalışan bir çözüm üretemedim, gerçekten biraz yardım istiyorum!sidekiq, Heroku'da sidekiq.pid dosyasını üretmiyor, Redistogo ile kullanıyor
Heroku üzerinde dağıtımını yaptıktan sonra, benim app çöker ve aşağıdaki hata yığın izleme olsun:
2014-09-23T23:38:40.905093+00:00 app[worker.1]: No such file or directory @ rb_sysopen - /app/tmp/pids/sidekiq.pid
2014-09-23T23:38:40.905122+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/bin/sidekiq:23:in `<main>'
2014-09-23T23:38:40.905119+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/gems/sidekiq-3.2.5/bin/sidekiq:7:in `<top (required)>'
2014-09-23T23:38:40.905117+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/gems/sidekiq-3.2.5/lib/sidekiq/cli.rb:347:in `write_pid'
2014-09-23T23:38:40.905115+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/gems/sidekiq-3.2.5/lib/sidekiq/cli.rb:347:in `open'
2014-09-23T23:38:40.905121+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/bin/sidekiq:23:in `load'
2014-09-23T23:38:40.905118+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/gems/sidekiq-3.2.5/lib/sidekiq/cli.rb:41:in `parse'
2014-09-23T23:38:40.905114+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/gems/sidekiq-3.2.5/lib/sidekiq/cli.rb:347:in `initialize'
2014-09-23T23:38:39.588001+00:00 heroku[worker.1]: State changed from starting to up
Birincisi, sidekiq benim yerel makinede düzgün çalışıyor. Ben redku için heroku REDISTOGO kullanıyorum, yerel üretim, sidekiq doğru REDISTOGO işaret ve iyi çalışıyor. İkinci olarak, yığın izine göre, özellikle bu çizgi No such file or directory @ rb_sysopen - /app/tmp/pids/sidekiq.pid
; Bu nedenle, bir nedenle sidekiq.pid
dosyasının heroku üzerinde çalışırken doğru şekilde oluşturulmadığını düşünmeme sebep oluyor. Yerel ortamda, app/tmp/pids/
dizininde uygulamayı başlattığımda her seferinde sidekiq.pid
dosyası oluşturulur ve her seferinde farklı bir pid
numara atar. Ben guessing
yaşıyorum ki bu e-postada çalışırken, sidekiq
bu dosyadan okumaya çalışmış ancak bulamadım. Benim sidekiq.rb
Sidekiq.configure_server do |config|
config.redis = { :url => ENV['REDISTOGO_URL'], :namespace => "mynamespece"}
end
Sidekiq.configure_client do |config|
config.redis = { :url => ENV['REDISTOGO_URL'], :namespace => "mynamespece"}
end
Güncelleme 1
benim config/sidekiq.yml
---
:verbose: true
:pidfile: ./tmp/pids/sidekiq.pid
:concurrency: 25
# Set timeout to 8 on Heroku, longer if you manage your own systems.
:timeout: 8
:queues:
- carrierwave
İşte
olduğu içeriği
web: bundle exec rails server
worker: bundle exec sidekiq -C config/sidekiq.yml
İşte
olan içerikleri: Burada
benim Procfile
yılında içerikleri ise
sidekiq
ile uyumlu olarak carrierwave
ve carrierwave-backgrounder
kullanıyorum.
Neden bir pid dosyası oluşturuyorsunuz? –
@MikePerham Hey Mike, sidekiq'in yazarı olduğunu biliyorum, bu konuya ilginiz için teşekkür ederim! Kasıtlı olarak pid kullanmıyordum.Ben sidekiq için yeniyim ve bu varsayılan davranış olduğunu düşündüm, çünkü benim uygulamam sırasında herhangi bir yerde pid'e referans veren herhangi bir konfigürasyona katılmadım. Ne önerirsiniz, yanlış bir şey yapıyorum? Belki pid kullanmamak sidekiq uygulamak için en uygun yoldur? Pid bölümünde çok fazla belge bulamadım. – Stephens
@MikePerham yerel ortamımda, her zaman foreman'ı kullanıyorum, aşağıdaki satırları görüyorum: '17:28:57 web.1 | pid ile başladı 20788' ' 17:28:57 worker.1 | pid ile başladı 20789' Pid numarası her seferinde farklı olurdu. – Stephens