What are the circumstances in which a fork do
call would throw Errno::EPIPE: Broken pipe
? I'm using Resque on an AWS instance and bizarrely, while Resque runs fine on a staging server, it is constantly throwing these broken pipe errors when it tries to have a worker fork a child process on a production server even though they are using the same AMI. I've put in enough logging statements to identify that the error is thrown when Resque attempts to fork:
@child = fork do
unregister_signal_handlers if term_child
perform(job, &block)
exit! unless run_at_exit_hooks
end
So the error comes from that top line (https://github.com/resque/resque/blob/master/lib/resque/worker.rb#L909). I'm not clear though why a fork
call would throw a Errno:EPIPE
. The server has plenty of memory, CPU, and hard drive to spare.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…