httpd-bugs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 15011] New: - Apache processes not timing out on Solaris 8
Date Tue, 03 Dec 2002 00:39:18 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15011>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15011

Apache processes not timing out on Solaris 8

           Summary: Apache processes not timing out on Solaris 8
           Product: Apache httpd-1.3
           Version: 1.3.26
          Platform: Sun
        OS/Version: Solaris
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: core
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: Graham.Stewart@sun.com


I recently upgraded a server from 1.3.20 to 1.3.26 only to find that keepalive 
timeouts are not enforced once a child has served more than one client.

The easiest way to see this on our build was to issue the following request.

GET / HTTP/1.1
Host: server.com
Connection: Keep-Alive

We have Apache/1.3.26 (Unix) mod_perl/1.26 mod_ssl/2.8.10 OpenSSL/0.9.6g

The second time that a child is used, the 15 second timeout is ignored and the 
process hangs for hours in the K (KeepAlive) state in /server-status (until the 
TCP connection times out or is closed by the client).

On a busy server eventually these hung child processes build up and deny 
legitimate service.

I believe this is related to revision 1.585 of http_main.c and have produced a 
fix by changing this code block at line 4916 in 1.3.26:

#if defined(CYGWIN) 
#define SIG_IDLE_KILL SIGKILL 
#define SIG_TIMEOUT_KILL SIGUSR2 
#else 
#define SIG_IDLE_KILL SIGUSR1 
#define SIG_TIMEOUT_KILL SIGALRM 
#endif 

to

#if defined(CYGWIN) || defined(SOLARIS2)
#define SIG_IDLE_KILL SIGKILL 
#define SIG_TIMEOUT_KILL SIGUSR2 
#else 
#define SIG_IDLE_KILL SIGUSR1 
#define SIG_TIMEOUT_KILL SIGALRM 
#endif

I gather solaris must have problems passing the SIGALRM signal. I also followed 
the cygwin route of using SIGKILL to kill idle processes since it appears to 
work where SIGUSR1 does not.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


Mime
View raw message