После апгрейда с apache 1.3.27 на 1.3.28 столкнулся с проблемой появления невероятного количества zombie (defunct) процессов. Оказалось что в apache CVS проблема уже исправлена. Проявляется при использовании suexec. Патч ниже.
--- apache-1.3/src/main/alloc.c 2003/06/20 15:05:40 1.145
+++ apache-1.3/src/main/alloc.c 2003/09/02 18:17:05 1.146
@@ -2859,12 +2859,10 @@
if ((p->kill_how == kill_after_timeout)
|| (p->kill_how == kill_only_once)) {
/* Subprocess may be dead already. Only need the timeout if not. */
- if (ap_os_kill(p->pid, SIGTERM) == -1) {
- p->kill_how = kill_never;
- }
- else {
- need_timeout = 1;
- }
+ if ( (ap_os_kill(p->pid, SIGTERM) == -1) && (errno == ESRCH) )
+ p->kill_how = kill_never;
+ else
+ need_timeout = 1;
}
else if (p->kill_how == kill_always) {
kill(p->pid, SIGKILL);
|