Ruby - Fork 抛出 Errno::EPIPE

问题描述

在什么情况下 fork do 调用会抛出 Errno::EPIPE: Broken pipe?我在 AWS 实例上使用 Resque 并且奇怪的是,虽然 Resque 在临时服务器上运行良好,但当它尝试让工作人员在生产服务器上分叉子进程时,它不断抛出这些损坏的管道错误,即使他们使用的是同一个 AMI。我已经输入了足够多的日志语句来识别当 Resque 尝试 fork 时抛出的错误:

@child = fork do
          unregister_signal_handlers if term_child
          perform(job,&block)
          exit! unless run_at_exit_hooks
        end

所以错误来自第一行 (https://github.com/resque/resque/blob/master/lib/resque/worker.rb#L909)。我不清楚为什么 fork 调用会抛出 Errno:EPIPE。服务器有足够的内存、CPU 和硬盘备用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)