Does the following ring a bell for someone?
Recently upgraded our server (on Solaris 10 SPARC) from 1.5.4 to
1.8.11 (CollabNet package). Some time after that, we discovered that
branching was very slow. I'm talking about pure server-side branching
('svn copy $URL/trunk $URL/branches/br1'). I'm testing with a 1.8.11
client (tried both from same machine as the server, and from another
machine on the LAN (100 Mbit)).
- Branching trunk (containing many directories and files): 6-8 minutes
- Branching a subfolder of trunk: 20-30 seconds (still very slow)
- Branching a single file is fast (< 0.5s or so).
So it seems the performance degrades depending on the depth or size of the tree.
Now, it gets more interesting:
- The resulting rev file on the server is always very small (as it
should be, it contains only a lightweight 'copy' of the trunk node).
- Our repos is currently served via https (Apache 2.2.29).
- Branching with file:/// urls is fast (branching trunk takes 0.6s).
- When starting an svnserve instance serving the same repository, and
branching with svn:// urls, it's fast as well (also 0.6s).
- We reproduced it on a copy of the production repo.
- Experimenting with the test copy, we found that
$repos/dav/activities.d contains ~2000 files. When we clear that
directory, the branching times go down by more than half (~2 minutes
for trunk, ~10s for subdir of trunk --- i.e. still slow, but it
definitely has an impact).
- With a 1.7 client connecting with neon, the problem is the same.
- During the 'svn copy', an httpd child consumes a lot of cpu (around
half a core).
- There is no authz configured for this repo (SVNPathAuthz off).
- Backend is still in 1.5 format (we have not run svnadmin upgrade
yet, a dump+load is planned in a couple of weeks).
So it seems clearly mod_dav_svn related (and not for instance related
to the FSFS backend).
I don't think we have anything special in our httpd config:
[[[
<Location /test_svn>
SVNInMemoryCacheSize 131072
SVNCacheFullTexts on
SVNCacheTextDeltas on
SSLRequireSSL
AuthName "TEST Subversion Repository"
AuthType Basic
AuthBasicProvider ldap
AuthBasicAuthoritative off
AuthLDAPURL "ldap://redacted:389"
AuthLDAPBindDN "redacted"
AuthLDAPBindPassword redacted
Require ldap-group redacted
DAV svn
SVNPath /path/to/test_repos
SVNPathAuthz off
</Location>
]]]
Any ideas?
Why the cpu usage by the server, what's it doing?
What is the dav/activities.d directory for? How come it contains so
many files? Is it ok to purge the old files from that directory?
--
Johan
Received on 2015-03-27 22:03:53 CET