2017-04-06 40 views
1

我試圖從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.ymllogfile集到./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既設置和未設置。

回答

0

我跟寶石維護人員交談過,他們刪除了v 8.0.13中的puts語句。它解決了我的問題!