Sidekiq Ошибка сломанной трубы

Я пытаюсь перейти с Heroku на AWS, но мои задания Sidekiq продолжают давать сбой со следующей ошибкой:

Errno::EPIPE: Broken pipe @ io_write - <STDOUT>

Я могу успешно запускать задания из консоли с помощью perform_now, и все отлично работает в Heroku, поэтому я предполагаю, что проблема кроется где-то в моей настройке AWS. Я видел ссылки на неправильную демонизацию вокруг Stack Overflow и 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 нет в моем 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 как установленным, так и неустановленным.


person Andy Weiss    schedule 06.04.2017    source источник


Ответы (1)


Я поговорил с сопровождающими гем, и они удалили инструкции puts в v 8.0.13. Это решило проблему для меня!

person Andy Weiss    schedule 07.04.2017