我試圖從Heroku的遷移到AWS,但我Sidekiq工作持續,出現以下錯誤失敗:Sidekiq水管壞了錯誤
Errno::EPIPE: Broken pipe @ io_write - <STDOUT>
我可以用perform_now
成功地從控制檯運行的工作,一切都在Heroku中工作得很好,所以我認爲問題在於我的AWS設置。我已經看到引用堆棧溢出和Github周圍不正確的守護進程,但不知道如何解決這個問題。
現在我啓動我的程序使用以下命令:
foreman start -f Procfile -p 3000 -e $VAR_FILES &
,我曾經嘗試都與不&
末的命令。
我Procfile看起來是這樣的:
web: bundle exec puma -t 1:2 -p ${PORT:-3000} -e ${RACK_ENV:-production} worker: bundle exec sidekiq -C config/sidekiq.yml log: tail -f log/production.log
,我也嘗試過這樣的,按照指示在這裏(https://github.com/mperham/sidekiq/wiki/Logging#syslog):
worker: bundle exec sidekiq -C config/sidekiq.yml 2>&1 | logger -t sidekiq
我sidekiq.yml
有logfile
集到./log/sidekiq.log
,我相信它應該將日誌重定向到STDOUT。
我在這裏看到了討論(https://github.com/mperham/sidekiq/issues/3188),並且可以驗證rails12factor
gem不在我的Gemfile中。
但仍然錯誤仍然存在......任何人都可以伸出援手嗎?
更新:我終於可以得到一個堆棧跟蹤,看看它是從puts
語句來的Neo4j.rb寶石裏面:
2017-04-07T15:46:53.553Z 697 TID-12a6r4 WARN: Errno::EPIPE: Broken pipe @ io_write - <STDOUT> 2017-04-07T15:46:53.553Z 697 TID-12a6r4 WARN: /var/lib/gems/2.3.0/bundler/gems/neo4j-c804cb33bef8/lib/neo4j/session_manager.rb:60:in `write' /var/lib/gems/2.3.0/bundler/gems/neo4j-c804cb33bef8/lib/neo4j/session_manager.rb:60:in `puts' /var/lib/gems/2.3.0/bundler/gems/neo4j-c804cb33bef8/lib/neo4j/session_manager.rb:60:in `puts'
但仍然不知道我怎麼能緩解問題。我已嘗試RAILS_LOG_TO_STDOUT=enabled
既設置和未設置。