[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Very slow svnserve responses on private repositories

From: Phil Bordelon <phil_at_lsu.edu>
Date: 2006-12-05 19:39:42 CET

I have been experiencing very slow svn:// responses on "private"
repositories.

There, I got the obligatory "repeat the subject" bit out of the way.
Let me explain.

I have a number of machines that host SVN repos. Some of these are
public; others are "private" in the sense that they do not allow
anonymous access.

On the "private" ones, actions such as

    svn diff -r somerev:someotherrev

tend to take upwards a minute. This is even if the repo is on the
same box that I'm doing the work on (as is often the case; the hosting
machines are my "desktops.")

If I modify the svnserve.conf from:

anon-access = none
auth-access = write

to

anon-access = read
auth-access = write

then the response times become effectively instantaneous.

Some real-world examples:

[with repository locked down]
$ time svn diff -r 170:171
Index: trunk/modules/wordwar.py
===================================================================
--- trunk/modules/wordwar.py (revision 170)
+++ trunk/modules/wordwar.py (revision 171)
@@ -78,8 +78,7 @@
              mywar = wordwars[id]
              if mywar['trigger'] == 1:
                  for user in mywar['joined']:
- if not user.startswith("eo@"):
- bot.msg(user, "WORD WAR START: YOU HAVE %s
MINUTE(S). (%s)" % (repr(mywar['duration']), id))
+ bot.msg(user, "WORD WAR START: YOU HAVE %s
MINUTE(S). (%s)" % (repr(mywar['duration']), id))
                  bot.msg(mywar['channel'], "WORD WAR START: YOU HAVE %s
MINUTE(S). (%s)" % (repr(mywar['duration']), id))
                  warning2 = threading.Timer(mywar['warning'][2],
warning_half, args=(bot, id))
                  warning2.setDaemon(True)

real 2m58.205s
user 0m0.010s
sys 0m0.000s

[with repository not locked down]
$ time svn diff -r 170:171
Index: trunk/modules/wordwar.py
===================================================================
--- trunk/modules/wordwar.py (revision 170)
+++ trunk/modules/wordwar.py (revision 171)
@@ -78,8 +78,7 @@
              mywar = wordwars[id]
              if mywar['trigger'] == 1:
                  for user in mywar['joined']:
- if not user.startswith("eo@"):
- bot.msg(user, "WORD WAR START: YOU HAVE %s
MINUTE(S). (%s)" % (repr(mywar['duration']), id))
+ bot.msg(user, "WORD WAR START: YOU HAVE %s
MINUTE(S). (%s)" % (repr(mywar['duration']), id))
                  bot.msg(mywar['channel'], "WORD WAR START: YOU HAVE %s
MINUTE(S). (%s)" % (repr(mywar['duration']), id))
                  warning2 = threading.Timer(mywar['warning'][2],
warning_half, args=(bot, id))
                  warning2.setDaemon(True)

real 0m0.059s
user 0m0.000s
sys 0m0.000s

Yes, that's three minutes before 'svn diff' gives any sort of
output. These were run right after each other, and the only change
in the runs is the modification of svnserve.conf.

This leads me to believe that the client is attempting to do anonymous
access for certain commands (which makes sense, as svn diff isn't doing
any writing to the repo) and the timeout for 'hey, you can't do that' is
extremely long. But I haven't dug into the code to determine whether
that is true or not.

I'm using svn 1.3.2, both client and server, on Gentoo. neon is 0.26.1,
APR is 0.9.12.

Please let me know if you need any more information to test this; it's
trivially reproducible on my machine, and I'd be willing to give a dev
an account on it to test on their own if that sort of thing would help.

Thanks a bunch for such a great piece of software! I keep up with the
-dev list as much as I can, even though most of it goes over my head. ;)

Phil

-- 
Phil Bordelon
Systems Administrator
Louisiana Optical Network Initiative
225.578.3725
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Dec 5 19:39:56 2006

This is an archived mail posted to the Subversion Dev mailing list.