SVN sobre SSL: muitas reconexões no commit

SVN sobre SSL: muitas reconexões no commit

O servidor SVN da nossa empresa, que é autoconfigurado e hospedado no EC2, é bastante lento. A configuração é baseada em Apache e mod_dav_svn. Há também um svnserve em execução que parece ser usado pelo sistema de CI. Podemos acessar os repositórios usando SSL com certificados de servidor e cliente e notei uma coisa estranha ao monitorar um commit com o Wireshark.

Eu esperava que houvesse um handshake SSL para estabelecer a conexão e que essa conexão fosse reutilizada durante a sessão. No entanto, parece que a cada 200ms/10kb há uma nova conexão TCP com novo handshake SSL (que, devido aos certificados, gera uma carga útil maior do que o próprio tráfego SVN).

Conversas durante um commit SVN. Observe que para cada conexão são transferidos no máximo 10kb de dados.

conversas durante um commit

Início do commit como pacotes. Pelo que sei, o servidor envia um alerta criptografado para fechar a conexão SSL. Então você vê o próximo aperto de mão...

insira a descrição da imagem aqui

Apachessl.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>

Estou usando clientes GUI/cli do TortoiseSVN. Minha suposição é que há uma configuração errada no lado do servidor, você concorda? Alguma dica?

Responder1

Ok, já encontrei a solução para essas reconexões e não exclua a pergunta caso outra pessoa a procure.

httpd.conf

-KeepAlive Off
+KeepAlive On

-MaxKeepAliveRequests 100
+MaxKeepAliveRequests 1000

Se KeepAlive estiver desativado, o Apache fecha a conexão após cada solicitação, e é por isso que vimos tantas reconexões e certificados.

Estas e algumas outras dicas de desempenho podem ser encontradas noManual SVN

informação relacionada