[ic] RPC traffic settings

Grant emailgrant at gmail.com
Mon Mar 11 02:59:23 UTC 2013


>> Yes, it sounds to me like he's saying that you can accomplish relatively the
>> same thing that double-forking would accomplish by setting SIGCHLD to
>> IGNORE, but still reap the performance benefits of single-forking. My
>> reading of Perl docs supports this as well.  See perldoc perlipc and search
>> for "CHLD".
>>
>>> I tried it but no luck.  Same result in less time.  I also tried
>>> without ChildLife.
>>
>> I find this (new) bit of info very interesting, it seems to suggest that the
>> problem occurs when children are destroyed.  I think that perhaps it's
>> leaving zombie processes and these are somehow preventing Interchange from
>> spawning new ones.  If this is the case then setting SIGCHLD to IGNORE may
>> indeed solve your problem.  Try adding this line into your bin/interchange
>> file inside one of the BEGIN blocks (probably where it has all those
>> commented out $ENV... lines:
>>
>> $SIG{CHLD} = 'IGNORE';
>
> I think you fixed it (with only a tiny amount of info from me).
> Should this be added to bin/interchange in git?

I spoke too soon although it does seem to have helped.  With
PreForkSingleFork and without the above line my system couldn't make
it past 15 minutes without becoming unresponsive, but after adding it
the system has gone 40 minutes with ChildLife and 60 minutes without
ChildLife.  I tried to monitor zombies with the following but didn't
see any whenever I checked:

# ps aux | awk '{ print $8 " " $2 }' | grep -w Z

Is $SIG{CHLD} = 'IGNORE'; beneficial without PreForkSingleFork?  Maybe
it's redundant?

- Grant



More information about the interchange-users mailing list