私はAWSにHerokuのから移行しようとしていますが、私のSidekiqジョブが次のエラーで失敗し続ける:Sidekiq壊れたパイプエラー
Errno::EPIPE: Broken pipe @ io_write - <STDOUT>
私は成功しperform_now
を使用してコンソールからジョブを実行し、すべてすることができますHerokuでうまく動作するので、AWSセットアップのどこかに問題があると推測しています。私はスタックオーバーフローとGithubの周りの不適切なデーモンへの参照を見てきましたが、どのように問題を解決するか分かりません。
は、今私は、次のコマンドを使用して、私のプロセスを起動しています:
foreman start -f Procfile -p 3000 -e $VAR_FILES &
と私は最後に&
ととせずに、両方のコマンドを試してみました。
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)こちらの指示に従って、このようにそれを試してみました:
私Procfileは、このようになります
worker: bundle exec sidekiq -C config/sidekiq.yml 2>&1 | logger -t sidekiq
私sidekiq.yml
はlogfile
セットを持っていますとにかくSTDOUTから離れてログをリダイレクトすると思われる./log/sidekiq.log
に転送します。
私はここで(https://github.com/mperham/sidekiq/issues/3188)の議論を見て、rails12factor
の宝石が私のGemfileにないことを確認できます。
しかし、それでもエラーが続く...誰かが手を貸すことはできますか?
UPDATE:私は最終的にスタックトレースを取得し、それがNeo4j.rb宝石の内部puts
の文から来て見ることができます:
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
で試してみました。