| From | Sent On | Attachments |
|---|---|---|
| Rich Bowen | Jan 19, 1998 1:27 pm | |
| ma...@hyperreal.org | Jan 19, 1998 2:16 pm |
| Subject: | os-windows/1697: too many open files error on repeated CGI access | |
|---|---|---|
| From: | Rich Bowen (rbo...@databeam.com) | |
| Date: | Jan 19, 1998 1:27:49 pm | |
| List: | org.apache.apache-bugdb | |
Number: 1697 Category: os-windows Synopsis: too many open files error on repeated CGI access Confidential: no Severity: serious Priority: medium Responsible: apache State: open Class: sw-bug Submitter-Id: apache Arrival-Date: Mon Jan 19 13:30:00 PST 1998 Last-Modified: Originator: rbo...@databeam.com Organization: apache Release: 3.3b3 Environment: Windows NT SP3, Apache 1.3b3 Description:
I found that every once in a while, my Apache server would give server errors on
all CGIs - ones that previously worked. The error message in the log was:
[Mon Jan 19 16:12:24 1998] [error] (24)Too many open files: couldn't spawn child
process: c:/apache/cgi-pts/foo.pl
I found that I could reproduce this error using the "torture" Perl program found
in the latest version of The Perl Journal, and hitting a Perl cgi program a few
hundred times in quick succession.
The "torture" program hits a give URL and appends random data into the
QUERY_STRING to test the server's tolerance. I am aware of the bug that causes
server errors if the QUERY_STRING does not contain an = sign, so I made sure
that there was always one in there so that I was not causing that bug to show
up.
The torture program was called with the following syntax:
torture -l 50 -t 1000 http://pts.databeam.com/cgi-bin/foo.pl\?foo=bar
-l 50 means append up to 50 characters of random data. -t 1000 means do it 1000 times.
After a few hundres iterations, the CGI program starts returning 500 errors, and
the log shows the "too many open files" message.
The program that I am using is simplitity itself -
#!/perl/bin/perl print "Content-type: text/html\n\n"; print "<h1>Foo</h1>";
How-To-Repeat:
Aquire "torture.pl" from
http://orwant.www.media.mit.edu/tpj/programs/Issue_8_CGI/
Write a CGI program as shown in my description.
sic torture on it a few thousand times. I found that it does OK for a little
while, and then rolls over and dies after a few hundred accesses, indicating
that this is a gradual process, and we have to work up to whatever limit we are
hitting.
Fix:
Blame it on MicroSoft?
It seems that perhaps the CGI process is not releasing either the script file or
the Perl interpreter. (?%2
Audit-Trail: Unformatted:
[In order for any reply to be added to the PR database, ] [you need to include <apb...@Apache.Org> in the Cc line ] [and leave the subject line UNCHANGED. This is not done] [automatically because of the potential for mail loops. ]





