【问题标题】:Sidekiq Broken Pipe ErrorSidekiq 断管错误
【发布时间】:2017-04-06 20:00:39
【问题描述】:

我正在尝试从 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 gem 不在我的 Gemfile 中。

但是错误仍然存​​在...有人可以帮忙吗?

更新:我终于可以得到一个堆栈跟踪,并看到它来自 Neo4j.rb gem 内的 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

【问题讨论】:

    标签: amazon-ec2 ruby-on-rails-5 sidekiq foreman neo4j.rb


    【解决方案1】:

    我与 gem 维护者交谈,他们删除了 v 8.0.13 中的 puts 语句。它为我解决了问题!

    【讨论】:

      猜你喜欢
      • 2011-03-29
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 2016-01-11
      • 1970-01-01
      • 2012-06-15
      相关资源
      最近更新 更多