Der SVN-Server in unserem Unternehmen, der selbst eingerichtet und auf EC2 gehostet wird, ist ziemlich langsam. Das Setup basiert auf Apache und mod_dav_svn. Es läuft auch ein Svnserve, der vom CI-System verwendet zu werden scheint. Wir können über SSL mit Server- und Client-Zertifikaten auf die Repositories zugreifen, und mir ist beim Überwachen eines Commits mit Wireshark etwas Merkwürdiges aufgefallen.
Ich hätte erwartet, dass es einen SSL-Handshake gibt, um die Verbindung herzustellen, und dass diese Verbindung während der Sitzung wiederverwendet wird. Es scheint jedoch, dass alle 200 ms/10 KB eine neue TCP-Verbindung mit neuem SSL-Handshake besteht (was aufgrund der Zertifikate eine höhere Nutzlast erzeugt als der SVN-Verkehr selbst).
Konversationen während eines SVN-Commits. Bitte beachten Sie, dass pro Verbindung maximal 10 KB Daten übertragen werden.
Beginn des Commits als Pakete. Soweit ich das beurteilen kann, sendet der Server eine verschlüsselte Warnung, um die SSL-Verbindung zu schließen. Dann sehen Sie den nächsten Handshake ...
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>
Ich verwende TortoiseSVN GUI/CLI-Clients. Ich gehe davon aus, dass auf der Serverseite eine falsche Konfiguration vorliegt. Stimmen Sie zu? Irgendwelche Hinweise?
Antwort1
Ok, ich habe also bereits die Lösung für diese Wiederverbindungen gefunden und lösche die Frage nicht, falls jemand anderes danach sucht.
httpd.conf
-KeepAlive Off
+KeepAlive On
-MaxKeepAliveRequests 100
+MaxKeepAliveRequests 1000
Wenn KeepAlive deaktiviert ist, schließt Apache die Verbindung nach jeder Anfrage. Deshalb haben wir so viele erneute Verbindungen und Zertifikate gesehen.
Diese und weitere Performance-Tipps finden Sie imSVN-Handbuch