2017-04-06 15 views
1

私は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.ymllogfileセットを持っていますとにかく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で試してみました。

答えて

0

私は宝石の保守担当者に話をし、彼らはv8.0.13のputsステートメントを削除しました。それは私にとって問題を解決しました!