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 клиентов. Мое предположение, что на стороне сервера неправильная конфигурация, вы согласны? Есть намеки?

1 ответ

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

httpd.conf

-KeepAlive Off
+KeepAlive On

-MaxKeepAliveRequests 100
+MaxKeepAliveRequests 1000

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

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

Другие вопросы по тегам