Hello,
It appears that my woes were caused by an Apache bug. Following is my
original question and the helpful response (solution) which I received
from Richard Jackson (whom I extend my gratitude):
Regards,
Bill Antoniadis
>Bill Antoniadis writes:
>
>
>>>
>>> Hello,
>>>
>>> Has anyone else experienced problems with OpenSSL 0.9.7c, Apache 1.3.28
>>> and modSSL 2.8.15? I have installed the aforementioned on three Tru64
>>> 5.1A (patch kit 5) boxes and I see Apache create a lot of defunct
>>> processes. Eventually, Apache can no longer spawn any processes as the
>>> zombies exceed "max_proc_per_user". I am trying to track down if this
>>> is an O/S related issue or OpenSSL-Apache-modSSL issue.
>>>
>>> Regards,
>>> Bill Antoniadis
>>>
>>>
>>>
>>
>>
>
>Yes, there is a bug in the apache code. This is a known issue but when
>I was investigating this issue in September 2003 the Apache developers
>were still trying to develop a fix. These are my notes...
>
>fix Apache 1.3.28 + modSSL due to CGI defunct processes
>The change tracker application is leaving behind defunct
>processes and it is assumed due to a bug introduced in Apache 1.3.28
>http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21737. Note this
>patch, id=21737, did not stop the defunct processes. Instead, I
>used the solutions suggested by Ralf Engelschall,
>http://marc.theaimsgroup.com/?l=apache-httpd-dev&m=105952652425849&w=2
>. cd /usr/local/src/apache_1.3.28
>. cp -p src/main/alloc.c src/main/alloc.c.20030904
>. modify src/main/alloc.c
>. make >& make.log2 &
>. strip src/httpd
>. cp -p src/httpd /usr/local/apache/bin/httpd.new
>. cd /usr/local/apache/bin
>. (mv httpd httpd.20030904;mv httpd.new httpd)
>. /sbin/init.d/https-apache stop
>. /sbin/init.d/https-apache start
>. cd /usr/local/src/apache_1.3.28/src/main
>. diff -c alloc.c.20030904 alloc.c
>---------------------------------------------
>*** alloc.c.20030904 Thu Sep 4 12:10:42 2003
>--- alloc.c Thu Sep 4 14:22:35 2003
>***************
>*** 3096,3107 ****
> 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;
>! }
> }
> else if (p->kill_how == kill_always) {
> kill(p->pid, SIGKILL);
>--- 3096,3103 ----
> if ((p->kill_how == kill_after_timeout)
> || (p->kill_how == kill_only_once)) {
> /* Subprocess may be dead already. Only need the timeout if not. */
>! ap_os_kill(p->pid, SIGTERM);
>! need_timeout = 1;
> }
> else if (p->kill_how == kill_always) {
> kill(p->pid, SIGKILL);
>---------------------------------------------
>
>
> -- Regards, /~\ The ASCII Richard Jackson \ / Ribbon Campaign Computer
> Systems Engineer, X Against HTML Information Technology Unit,
> Technology Systems Division / \ Email! Enterprise Servers and
> Operations Department George Mason University, Fairfax, Virginia
>
Received on Wed Oct 08 2003 - 18:55:11 NZDT