Назад | Перейти на главную страницу

SVN через SSL: многие повторно подключаются при фиксации

Сервер SVN в нашей компании, который настраивается самостоятельно и размещается на EC2, работает довольно медленно. Настройка основана на Apache и mod_dav_svn. Также работает svnserve, который, похоже, используется системой CI. Мы можем получить доступ к репозиториям с помощью SSL с сертификатами сервера и клиента, и я заметил странную вещь, отслеживая фиксацию с помощью Wireshark.

Я ожидал, что для установления соединения будет установлено соединение SSL и что это соединение будет повторно использовано в течение сеанса. Однако кажется, что каждые 200 мс / 10 Кбайт возникает новое TCP-соединение с новым подтверждением SSL (которое из-за сертификатов обеспечивает более высокую полезную нагрузку, чем сам трафик SVN).

Разговоры во время фиксации SVN. Обратите внимание, что для каждого подключения передается не более 10 КБ данных.

Начало фиксации в виде пакетов. Насколько я могу судить, сервер отправляет зашифрованное предупреждение о закрытии SSL-соединения. Затем вы видите следующее рукопожатие ...

Apache ssl.conf:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

SSLVerifyClient optional
SSLUserName SSL_CLIENT_S_DN_CN
SSLCARevocationFile /etc/httpd/ssl/xxx-revoke.pem

<Location /svn/repos>
    DAV svn
    SVNPath /path/svn/repos
    SSLRequireSSL
    SSLRequire (%{SSL_CLIENT_S_DN_O} in {"c1", "c2"}) and !(%{SSL_CLIENT_S_DN_CN} in {"old1", "old2"})

   # Allow large files
   LimitXMLRequestBody 0
   LimitRequestBody 0
</Location>

Я использую клиенты TortoiseSVN GUI / cli. Я предполагаю, что на стороне сервера неправильная конфигурация, вы согласны? Есть подсказки?

Хорошо, я уже нашел решение для этих повторных подключений и не удаляю вопрос, если кто-то другой его найдет.

httpd.conf

-KeepAlive Off
+KeepAlive On

-MaxKeepAliveRequests 100
+MaxKeepAliveRequests 1000

Если KeepAlive выключен, Apache закрывает соединение после каждого запроса, поэтому мы видели так много повторных подключений и сертификатов.

Эти и некоторые другие советы по производительности можно найти в Руководство по SVN