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é

Reply via email to