TL;DR: RT4.4.x using the FCGI server. Workers die all the time, and monitoring restarts RT when the last one is gone. We think the problem is unhandled SIGPIPE signals, so I added a line of Perl to rt-server.fcgi to ignore SIGPIPE in hopes that this will let the workers stop dying when they get this signal. Is there any reason I should not have added this line, or am I okay to keep it in? Does anyone know why it’s never been added to RT? Even RT5 is missing it.
We’ve used RT for years now, always through its FCGI server. We’ve always had our FCGI workers die, one by one, until a monitoring job restarted them all after the last one went away. Finally, we figured out why (we think), thanks to help from
When the FCGI server receives SIGPIPE, which can happen from time to time based on user activity, there’s nothing to handle it. Thus, the worker dies.
I copied rt-server.fcgi, and added a snippet I found online to ignore SIGPIPE, then pointed RT at that server file instead. Twelve hours later, there have been no problems, though of course, the test will be once our users start accessing the site today.
Is there a reason that ignoring SIGPIPE hasn’t been made part of the source code yet, after all this time? I imagine it’s just something no one really considered. In the back of my mind is a concern that, somehow, including this could cause serious problems that no one was able to work around, so the decision was to let the worker die rather than deal with whatever issues adding the SIGPIPE handler introduced. I doubt this is the case, but modifying the source of files in sbin makes me nervous. Thanks for any thoughts on this.