Re: getting rid of 'server reached MaxClients setting' error
Stas Bekman wrote: I think this misleading error is really a bug in Apache: I agree. [Mon Apr 26 15:28:44 2004] [error] server reached MaxClients setting, consider raising the MaxClients setting It sounds like a one-off bug to me. It reports that error when the number of workers is the same as MaxClients, it's worse than that, I think. which is perfectly fine. It should only report a problem when a new request is coming in and there are no free servers/threads to handle the request. I've seen this recently while experimenting with event driven I/O built on top of the worker MPM. It seems to happen when the parent is trying to increase the number of child processes but they haven't initialized yet and the server is temporarily out of worker threads. I didn't see the number of active workers reach MaxClients. Re-examining the test that leads to the message: else if (idle_thread_count min_spare_threads) { == cool /* terminate the free list */ if (free_length == 0) { == insufficient I'm a little rusty on this code, but looks like free_length is increased when the code finds a process with at least one worker thread with SERVER_DEAD state in the scoreboard. I don't see where it checks for MaxClients. Greg
Re: cvs commit: httpd-test/perl-framework/Apache-Test/lib/Apache TestConfigPerl.pm
[EMAIL PROTECTED] wrote: geoff 2004/04/28 07:55:42 Modified:perl-framework/Apache-Test/lib/Apache TestConfigPerl.pm Log: prevent 'Empty compile time value given to use lib' warnings Revision ChangesPath 1.88 +1 -0 httpd-test/perl-framework/Apache-Test/lib/Apache/TestConfigPerl.pm Index: TestConfigPerl.pm === RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestConfigPerl.pm,v retrieving revision 1.87 retrieving revision 1.88 diff -u -r1.87 -r1.88 --- TestConfigPerl.pm 7 Apr 2004 21:51:36 - 1.87 +++ TestConfigPerl.pm 28 Apr 2004 14:55:42 - 1.88 @@ -180,6 +180,7 @@ my $include_pl = catfile $self-{vars}-{t_conf}, 'modperl_inc.pl'; my $fh = $self-genfile($include_pl); for (reverse @$inc) { +next unless $_; print $fh use lib '$_';\n; } my $fixup = Apache::TestConfig-modperl_2_inc_fixup(); I don't understand why did you have this problem (what did you have in @INC?), but I think that this just works around the problem. It's better to go up to where $self-{inc} is getting set and not let invalid values in, so if you use $self-{inc} you won't have to workaround again. -- __ Stas BekmanJAm_pH -- Just Another mod_perl Hacker http://stason.org/ mod_perl Guide --- http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
Re: getting rid of 'server reached MaxClients setting' error
[EMAIL PROTECTED] wrote: Stas Bekman wrote: I think this misleading error is really a bug in Apache: I agree. [Mon Apr 26 15:28:44 2004] [error] server reached MaxClients setting, consider raising the MaxClients setting It sounds like a one-off bug to me. It reports that error when the number of workers is the same as MaxClients, it's worse than that, I think. which is perfectly fine. It should only report a problem when a new request is coming in and there are no free servers/threads to handle the request. I've seen this recently while experimenting with event driven I/O built on top of the worker MPM. It seems to happen when the parent is trying to increase the number of child processes but they haven't initialized yet and the server is temporarily out of worker threads. I didn't see the number of active workers reach MaxClients. Re-examining the test that leads to the message: else if (idle_thread_count min_spare_threads) { == cool /* terminate the free list */ if (free_length == 0) { == insufficient I'm a little rusty on this code, but looks like free_length is increased when the code finds a process with at least one worker thread with SERVER_DEAD state in the scoreboard. I don't see where it checks for MaxClients. Thanks, Greg. Am I right to say that you now have an itch to scratch and get it solved? :) __ Stas BekmanJAm_pH -- Just Another mod_perl Hacker http://stason.org/ mod_perl Guide --- http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
Re: cvs commit: httpd-test/perl-framework/Apache-Test/lib/Apache TestConfigPerl.pm
I don't understand why did you have this problem (what did you have in @INC?), but I think that this just works around the problem. It's better to go up to where $self-{inc} is getting set and not let invalid values in, so if you use $self-{inc} you won't have to workaround again. I was finding it too difficult to trace. I've never seen it before, but in a fairly complex environment that I don't fully understand modperl_inc.pl had an entry like use lib ''; I tried to figure out at which of the many stages it was added but I didn't see it, so I figured removing it at the last possible moment was best. feel free to track it down, though :) --Geoff
1.3.31?
Hi, Last week it was mentioned that the 1.3.31 release process would start on Monday. I've seen no mail indicating that has started. Is there anything holding 1.3.31 up at this point? Also, if RSE is reading this list, whats the lead time between 1.3.31 being tagged or released and mod_ssl becoming available? Any info would be great. I need to plan a release cycle of my own. Kean
Re: 1.3.31?
The TR of 1.3.31 will be done within the next day or 2 with a formal release likely early next week. -- === Jim Jagielski [|] [EMAIL PROTECTED] [|] http://www.jaguNET.com/ A society that will trade a little liberty for a little order will lose both and deserve neither - T.Jefferson
Re: getting rid of 'server reached MaxClients setting' error
moving to [EMAIL PROTECTED] Stas Bekman wrote: I think this misleading error is really a bug in Apache: I agree. [Mon Apr 26 15:28:44 2004] [error] server reached MaxClients setting, consider raising the MaxClients setting It seems to happen when the parent is trying to increase the number of child processes but they haven't initialized yet and the server is temporarily out of worker threads. I didn't see the number of active workers reach MaxClients. Re-examining the test that leads to the message: else if (idle_thread_count min_spare_threads) { == cool /* terminate the free list */ if (free_length == 0) { == insufficient I wasn't able to confirm the theory that this line is wrong. I stuck in an assert() to force the parent to coredump right before issuing the message. Much to my surprise I saw ap_daemons_limit (basically MaxClients/ThreadsPerChild, after sanity checking and rounding) active child processes. I couldn't verify the state of the worker threads at the instant the assert() hit from the dump since the children continued to run and update the scoreboard while the parent was dumping it. Perhaps the parent should anticipate how many worker threads will eventually become active after it forks/kills children, and to take this into account before doing anything rash like forking or writing error messages. But that will take some thought and this code is gnarly. I'm a little rusty on this code, I was able to confirm this theory :( Thanks, Greg. Am I right to say that you now have an itch to scratch and get it solved? :) I have an itch but no good solution so far. Ideas/patches are welcome, especially ones that simplify this code. Greg
Regarding parse_byterange()
Hello, On my HP-UX 11i box (64-bit os), if I build a 32-bit app (default), the apr_off_t is a 4-byte entity and apr_int64_t is a 8-byte entity. I'm sure more than one person has experienced something similar. This is the part that I don't understand : In http_protocol.c: parse_byterange(), the return value of apr_atoi64 is being assigned to apr_off_t - what's the point of doing something like that ? Can I change range_start and range_end to apr_int64_t ? -Madhu
WebDAV and reading / writing files as system users
Hi all, I am busy researching the idea of an Apache + DAV server that would do the job of what a typical Samba server does now - file sharing. An Apache server would have the advantage of native SSL support, flexible authentication configuration, etc. One thing I would like to be able to do is have the DAV server read and write files as system users, along the lines of what suexec achieves for cgi programs. Obviously the DAV server would need to run as root (or have some mechanism like suexec) in order to achieve this, and would probably be set up as a private stripped down DAV-only server hiding behind a reverse proxy of some kind in order to improve security. The perchild mpm seems to be the closest thing to what I am looking for, but the manual warns that it is not functional. Is this still the case? Can perchild support the idea of becoming a user specified via an auth module using something like basic authentication? Regards, Graham --
Re: WebDAV and reading / writing files as system users
On Thu, 29 Apr 2004, Graham Leggett wrote: The perchild mpm seems to be the closest thing to what I am looking for, but the manual warns that it is not functional. Is this still the case? Yes. I don't know of anyone successfully using perchild. There is another group working on a successor called something like mpmmux, but they've been rather quite too. Can perchild support the idea of becoming a user specified via an auth module using something like basic authentication? Not with its current design. For one thing, it needs to have a pool of child threads available for each possible user, which would make it rather inappropriate for a large number of users. For another thing, it currently only supports different users on a per-vhost basis. But I suppose that last restriction would be easy enough to relax. Joshua.
[STATUS] (apache-1.3) Wed Apr 28 23:45:11 EDT 2004
APACHE 1.3 STATUS: -*-text-*- Last modified at [$Date: 2004/04/19 18:53:57 $] Release: 1.3.31-dev: In development. Plan to TR week of April 19. 1.3.30: Tagged April 9, 2004. Not released. 1.3.29: Tagged October 24, 2003. Announced Oct 29, 2003. 1.3.28: Tagged July 16, 2003. Announced ?? 1.3.27: Tagged September 30, 2002. Announced Oct 3, 2002. 1.3.26: Tagged June 18, 2002. 1.3.25: Tagged June 17, 2002. Not released. 1.3.24: Tagged Mar 21, 2002. Announced Mar 22, 2002. 1.3.23: Tagged Jan 21, 2002. 1.3.22: Tagged Oct 8, 2001. Announced Oct 12, 2001. 1.3.21: Not released. (Pulled for htdocs/manual config mismatch. t/r Oct 5, 2001) 1.3.20: Tagged and rolled May 15, 2001. Announced May 21, 2001. 1.3.19: Tagged and rolled Feb 26, 2001. Announced Mar 01, 2001. 1.3.18: Tagged and rolled Not released. (Pulled because of an incorrect unescaping fix. t/r Feb 19, 2001) 1.3.17: Tagged and rolled Jan 26, 2001. Announced Jan 29, 2001. 1.3.16: Not released. (Pulled because of vhosting bug. t/r Jan 20, 2001) 1.3.15: Not released. (Pulled due to CVS dumping core during the tagging when it reached src/os/win32/) 1.3.14: Tagged and Rolled Oct 10, 2000. Released/announced on the 13th. 1.3.13: Not released. (Pulled in the first minutes due to a Netware build bug) 1.3.12: Tagged and rolled Feb. 23, 2000. Released/announced on the 25th. 1.3.11: Tagged and rolled Jan. 19, 2000. Released/announced on the 21st. 1.3.10: Not released. (Pulled at last minute due to a build bug in the MPE port) 1.3.9: Tagged and rolled on Aug. 16, 1999. Released and announced on 19th. 1.3.8: Not released. 1.3.7: Not released. 1.3.6: Tagged and rolled on Mar. 22, 1999. Released and announced on 24th. 1.3.5: Not released. 1.3.4: Tagged and rolled on Jan. 9, 1999. Released on 11th, announced on 12th. 1.3.3: Tagged and rolled on Oct. 7, 1998. Released on 9th, announced on 10th. 1.3.2: Tagged and rolled on Sep. 21, 1998. Announced and released on 23rd. 1.3.1: Tagged and rolled on July 19, 1998. Announced and released. 1.3.0: Tagged and rolled on June 1, 1998. Announced and released on the 6th. 2.0 : Available for general use, see httpd-2.0 repository RELEASE SHOWSTOPPERS: * mod_digest/nonce issue. Message-Id: [EMAIL PROTECTED] Patches: Already committed to CVS for ease of review and test. Developers should review these!! RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP: * PR: 27023 Cookie could not delivered if the cookie made before proxy module. * isn't ap_die() broken with recognizing recursive errors Message-Id: [EMAIL PROTECTED] +1: jeff, jim * Current vote on 3 PRs for inclusion: Bugz #17877 (passing chunked encoding thru proxy) (still checking if RFC compliant... vote is on the correctness of the patch code only). +1: jim, chuck, minfrin Bugz #9181 (Unable to set headers on non-2XX responses) +1: Martin, Jim Gnats #10246 (Add ProxyConnAllow directive) +0: Martin (or rather -.5, see dev@ Message [EMAIL PROTECTED]) * htpasswd.c and htdigest.c use tmpnam()... consider using mkstemp() when available. Message-ID: [EMAIL PROTECTED] Status: * Dean's unescaping hell (unescaping the various URI components at the right time and place, esp. unescaping the host name). Message-ID: [EMAIL PROTECTED] Status: * Martin observed a core dump because a ipaddr_chain struct contains a NULL-server pointer when being dereferenced by invoking httpd -S. Message-ID: [EMAIL PROTECTED] Status: Workaround enabled. Clean solution can come after 1.3.19 * long pathnames with many components and no AllowOverride None Workaround is to define Directory / with AllowOverride None, which is something all sites should do in any case. Status: Marc was looking at it. (Will asks 'wasn't this patched?') * Ronald Tschalär's patch to mod_proxy to allow other modules to set headers too (needed by mod_auth_digest) Message-ID: [EMAIL PROTECTED] Status: Available Patches (Most likely, will be ported to 2.0 as appropriate): * A rewrite of ap_unparse_uri_components() by Jeffrey W. Baker [EMAIL PROTECTED] to more fully close some segfault potential. Message-ID: [EMAIL PROTECTED] Status: Jim +1 (for 1.3.19), Martin +0 * Andrew Ford's patch (1999/12/05) to add absolute times to mod_expires Message-ID: [EMAIL PROTECTED] Status: Martin +1, Jim +1, Ken +1 (on concept) * Raymond S Brand's path to mod_autoindex to fix the header/readme include processing so the envariables are correct for
[STATUS] (httpd-2.0) Wed Apr 28 23:45:20 EDT 2004
APACHE 2.0 STATUS: -*-text-*- Last modified at [$Date: 2004/04/28 23:36:31 $] Release: 2.0.50 : in development 2.0.49 : released March 19, 2004 as GA. 2.0.48 : released October 29, 2003 as GA. 2.0.47 : released July 09, 2003 as GA. 2.0.46 : released May 28, 2003 as GA. 2.0.45 : released April 1, 2003 as GA. 2.0.44 : released January 20, 2003 as GA. 2.0.43 : released October 3, 2002 as GA. 2.0.42 : released September 24, 2002 as GA. 2.0.41 : rolled September 16, 2002. not released. 2.0.40 : released August 9, 2002 as GA. 2.0.39 : released June 17, 2002 as GA. 2.0.38 : rolled June 16, 2002. not released. 2.0.37 : rolled June 11, 2002. not released. 2.0.36 : released May 6, 2002 as GA. 2.0.35 : released April 5, 2002 as GA. 2.0.34 : tagged March 26, 2002. 2.0.33 : tagged March 6, 2002. not released. 2.0.32 : released Feburary 16, 2002 as beta. 2.0.31 : rolled Feburary 1, 2002. not released. 2.0.30 : tagged January 8, 2002. not rolled. 2.0.29 : tagged November 27, 2001. not rolled. 2.0.28 : released November 13, 2001 as beta. 2.0.27 : rolled November 6, 2001 2.0.26 : tagged October 16, 2001. not rolled. 2.0.25 : rolled August 29, 2001 2.0.24 : rolled August 18, 2001 2.0.23 : rolled August 9, 2001 2.0.22 : rolled July 29, 2001 2.0.21 : rolled July 20, 2001 2.0.20 : rolled July 8, 2001 2.0.19 : rolled June 27, 2001 2.0.18 : rolled May 18, 2001 2.0.17 : rolled April 17, 2001 2.0.16 : rolled April 4, 2001 2.0.15 : rolled March 21, 2001 2.0.14 : rolled March 7, 2001 2.0a9 : released December 12, 2000 2.0a8 : released November 20, 2000 2.0a7 : released October 8, 2000 2.0a6 : released August 18, 2000 2.0a5 : released August 4, 2000 2.0a4 : released June 7, 2000 2.0a3 : released April 28, 2000 2.0a2 : released March 31, 2000 2.0a1 : released March 10, 2000 Please consult the following STATUS files for information on related projects: * srclib/apr/STATUS * srclib/apr-util/STATUS * docs/STATUS Contributors looking for a mission: * Just do an egrep on TODO or XXX in the source. * Review the PatchAvailable bugs in the bug database. Append a comment saying Reviewed and tested. * Open bugs in the bug database. RELEASE SHOWSTOPPERS: PATCHES TO BACKPORT FROM 2.1 [ please place file names and revisions from HEAD here, so it is easy to identify exactly what the proposed changes are! ] *) mod_log_forensic: Fix build on systems without unistd.h. PR 28572 modules/loggers/mod_log_forensic.c: r1.19 +1: nd, trawick *) mod_actions: Regression from 1.3: the file referred to must exist. Solve this by introducing the virtual modifier to the Action directive. PR 28553. modules/mappers/mod_actions.c: r1.32, r1.34 +1: nd *) htpasswd should not refuse to process files containing empty lines. support/htpasswd.c: r1.76 +1: nd, trawick *) Disable AcceptEx on Win9x systems automatically. (broken in 2.0.49) PR 28529 server/mpm/winnt/mpm_winnt.c: 1.311 +1: nd, trawick *) export ap_set_sub_req_protocol and ap_finalize_sub_req_protocol on Win32. (should be a minor MMN bump). PR 28523. server/protocol.c: r1.147 include/http_protocol.h: r1.91 +1: nd, trawick *) allow symlinks on directories to be processed by Include directives and stop possible recursion by a counter. PR 28492 server/config.c: r1.175 +1: nd *) detect Include directive recursion by counting the nesting level. PR 28370. server/core.c: r1.275 +1: nd *) mod_headers: Backport ErrorHeader directive (regression from 1.3) modules/metadata/mod_headers.c: r1.44, 1.45, 1.51 +1: nd, trawick *) mod_headers: Allow conditional RequestHeader directives. PR 27951 modules/metadata/mod_headers.c: r1.52 +1: nd, trawick *) Allow URLs for ServerAdmin. PR 28174. server/core.c: r1.274 +1: nd, bnicholes *) mod_rewrite: Fix confused map cache (with maps in different VHs using the same name). PR 26462. (2.0 + 1.3) A patch for 1.3 is here (2.0 goes similar): http://www.apache.org/~nd/mod_rewrite-confusion-1.3.patch modules/mappers/mod_rewrite.c: r1.256 +1: nd *) mod_log_config: Cleanup log_header_out function to allow multiple headers like Set-Cookie to be logged properly. PR 27787 (2.0 + 1.3) modules/loggers/mod_log_config.c: r1.116 +1: nd *) Fix a bunch of cases where the return code of the regex compiler was not checked properly. The 1.3-diff is here: http://www.apache.org/~nd/regex-return-1.3.diff (only core and
[STATUS] (httpd-2.1) Wed Apr 28 23:45:32 EDT 2004
APACHE 2.1 STATUS: -*-text-*- Last modified at [$Date: 2004/04/27 22:09:17 $] Release [NOTE that only Alpha/Beta releases occur in 2.1 development]: 2.1.0 : in development Please consult the following STATUS files for information on related projects: * srclib/apr/STATUS * srclib/apr-util/STATUS * docs/STATUS Contributors looking for a mission: * Just do an egrep on TODO or XXX in the source. * Review the PatchAvailable bugs in the bug database. Append a comment saying Reviewed and tested. * Open bugs in the bug database. CURRENT RELEASE NOTES: * When the CVS-SVN is done, there's a bogus avendor branch that should be removed from most files. The branch was created 4/27/2004. It's safest (and easiest) for now just to leave it in there; the MAIN branch and the APACHE_2_0_BRANCH are untouched and unharmed. --jwoolley RELEASE SHOWSTOPPERS: * Handling of non-trailing / config by non-default handler is broken http://marc.theaimsgroup.com/?l=apache-httpd-devm=105451701628081w=2 * the edge connection filter cannot be removed http://marc.theaimsgroup.com/?l=apache-httpd-devm=105366252619530w=2 CURRENT VOTES: * Promote mod_cache from experimental to non-experimental status (keep issues noted below in EXPERIMENTAL MODULES as items to be addressed as a supported module). +1: jim, bnicholes -0: jerenkrantz -1: stoddard There are a couple of problems that need to be resolved before this module is moved out of experimental. 1) We need to at least review and comment on the RFC violations 2) Resolve issue of how to cache page fragements (or perhaps -if- we want to cache page fragements). Today, mod_cache/mod_mem_cache will cache #include 'virtual' requests (but not #include 'file' requests). This was accomplished by making CACHE_IN a CONTENT_SET-1 filter to force it to run before the SUBREQ_CORE filter. But now responses cannot be cached that include the effects of having been run through CONTENT_SET filters (mod_deflate, mod_expires, etc). We could rerun all the CONTENT_SET filters on the cached response, but this will not work in all cases. For example, mod_expires relies on installing the EXPIRATION filter during fixups. Contents served out of mod_cache (out of the quick_handler) bypass -all- the request line server hooks (Ryan really hated this. It is great for performance, but bad because of the complications listed above). jerenkrantz: There are a slew of RFC compliance bugs filed in Bugzilla for mod_cache (see 'RFC 2616 violations' below). I think fixing them is a pre-requisite before it isn't experimental. * httpd-std.conf and friends a) httpd-std.conf should be tailored by install (from src or binbuild) even if user has existing httpd.conf +1: trawick, slive, gregames, ianh, Ken, wrowe, jwoolley, jim, nd, erikabele wrowe - prefer httpd.default.conf to avoid ambiguity with cvs b) tailored httpd-std.conf should be copied by install to sysconfdir/examples -0: striker c) tailored httpd-std.conf should be installed to sysconfdir/examples or manualdir/exampleconf/ +1: slive, trawick, Ken, nd (prefer the latter), erikabele d) Installing a set of default config files when upgrading a server doesn't make ANY sense at all. +1: ianh - medium/big sites don't use 'standard config' anyway, as it usually needs major customizations -1: Ken, wrowe, jwoolley, jim, nd, erikabele wrowe - diff is wonderful when comparing old/new default configs, even for customized sites that ianh mentions jim - ... assuming that the default configs have been updated with the required inline docs to explain the changes * If the parent process dies, should the remaining child processes gracefully self-terminate. Or maybe we should make it a runtime option, or have a concept of 2 parent processes (one being a hot spare). See: Message-ID: [EMAIL PROTECTED] Self-destruct: Ken, Martin, Lars Not self-destruct: BrianP, Ian, Cliff, BillS Make it runtime configurable: Aaron, jim, Justin, wrowe, rederpj, nd /* The below was a concept on *how* to handle the problem */ Have 2 parents: +1: jim -1: Justin, wrowe, rederpj, nd +0: Lars, Martin (while standing by, could it do something useful?) * Make the worker MPM the default MPM for threaded Unix boxes. +1: Justin, Ian, Cliff, BillS, striker, wrowe, nd +0: BrianP, Aaron