Hi all,
Le 14/03/2015 15:02, Jarno Huuskonen a écrit :
Hi,
On Sat, Mar 14, Sebastian Schäfer wrote:
Hello there,
When moving from Apache proxy to HAProxy we noticed slow connections and
frequent disconnects when doing SVN checkouts and commits.
The problems seems to be related to SVN >= 1.8.x.
Here's how to reproduce the issue:
- Set up SVN server 1.8.x with Apache
- Configure HAProxy 1.5.x (we use 1.5.5) as standard http/https (or tcp)
reverse proxy with a simple backend config like this:
Have you tested if upgrading to 1.5.11 makes any difference ?
+++++++++++++++++++++
backend subversion
option httpclose
Is httpclose needed w/svn ?
I think this is definitely the issue.
You should enable HTTP keep-alive in your haproxy configuration by
removing "option httpclose".
Have a look at "option http-keep-alive" [1] and "option
prefer-last-server" [2].
See also [3] for the changes in svn, which explain the decreased
performance.
[1]
http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#option%20http-keep-alive
[2]
http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#option%20prefer-last-server
[3] http://subversion.apache.org/docs/release-notes/1.8.html#neon-deleted
option forwardfor
server mysvn mysvnserv.mydomain:80 cookie A
reqirep Destination:\ https(.*) Destination:\ http\\1
+++++++++++++++++++++
- Use an SVN client >= 1.8.x
- Try to commit and checkout a larger number of files
- You will notice slow connections and disconnects
Apparently SVN clients < 1.8 don't cause the problem, I can checkout large
repositories without any problems (Maybe related to the serf-library introduced in
the 1.8 line).
Looks like someone else already ran into the same issue, as you can see here:
http://grokbase.com/t/subversion/users/148m7sk22k/haproxy-subversion.
Have you tried http-bulk-updates: no/yes or disabling compression ?
And do get any errors etc. on the apache logs ?
Any ideas?
What do you get in your logs when svn client fails ?
(Maybe even try with: no option dontlog-normal, no option dontlognull)
Do you have: no option accept-invalid-http-request or
no option accept-invalid-http-response in your config ?
And what timeout values do you have in your config ?
-Jarno
--
Cyril Bonté