Just being able to kill processes when their requests have been terminated would improve the situation dramatically. It would also allow termination policies to be implemented in the front-end server (Apache). This would not be as nice as the suggestion you made, but we could whip up a simple solution quickly.
Can you programmatically determine when a process is associated with a terminated request or is it a fuzzy exercise (like watching "top" for awhile)? Do you use /Control_Panel/DebugInfo? When you find it, is it sufficient and safe to just kill it?
--kyler
I'm not sure if there is a way to know if the request has been terminated, but if you could killing the thread should work. I think Zope creates new threads until the maximum set in the start script is reached. If one was killed I would assume that Zope would just start up another one the next time it is needed until the maximum is again reached. This would greatly reduce the problem I agree. -Brian