If many queries come in too quickly, apache2 freezes.
I have set up a Xeon-based server with a number of Subversion repositories, served through libmod-dav_svn on apache2, and using OpenLDAP to provide directory and authentication services.
Now for simple queries, for instance from a Windows desktop using TortoiseSVN, there is no problem with this. In fact it works beautifully. However when doing a more complex query involving multiple rapid accesses it causes all the free apache threads to be consumed, which all appear to be stuck in a loop waiting for a response from slapd, which has already been given. The Subversive plugin for Eclipse seems to cause this nearly every time.
Here's the kicker: when I turned on logging in slapd using loglevel 256 (for example), the problem goes away. Could it be that the request for info is fired off, then slapd responds before mod-dav_svn is ready for the response, whereas if it is slowed down by logging, the Apache module is ready in time? I'd have expected some sort of pipeline in there, but who knows?
# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.
# Global Directives:
# Features to permit
# Schema and objectClass definitions
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index cn,sn,uid pres,eq,sub
index objectClass eq
checkpoint 512 30
access to attrs=userPassw
by anonymous auth
by self write
by * none
access to *
by * read
And here's the setup for the repos:
ServerAdmin <email address hidden>
Allow from all
AuthName "Subversion Repository"
Require ldap-group cn=subversion,
# Other testing with files
# AuthUserFile /etc/apache2/
# AuthzSVNAccessFile /etc/apache2/
# Require valid-user
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
|d1zzyg (brianjamesgillespie) wrote : Re: [Bug 234367] Re: If many queries come in too quickly, apache2 freezes.||#7|
|Changed in apache2 (Ubuntu):|
|importance:||Undecided → Low|
|status:||Incomplete → Confirmed|