基于SSL的SVN:多次提交重新连接

我们公司的SVN服务器,自行安装,托pipe在EC2上,速度很慢。 该设置基于Apache和mod_dav_svn。 CI系统似乎也在使用svnserve。 我们可以使用服务器和客户端证书使用SSL访问存储库,我注意到一个奇怪的事情,同时使用Wireshark监视提交。

我会期望有一个SSL握手来build立连接,并且该连接在会话中被重用。 但是,似乎每200ms / 10kb有一个新的TCP连接与新的SSL握手(这是由于证书采购比SVNstream量本身更高的有效负载)。

SVN提交期间的对话。 请注意,每个连接最多只有10kb的数据传输。

提交期间的对话

作为数据包提交的开始。 据我可以告诉服务器发送encryption警报closuresSSL连接。 然后你看到下一次握手…

在这里输入图像说明

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客户端。 我认为在服务器端有一个错误的configuration,你同意吗? 任何提示?

好的,所以我已经find了重新连接的解决scheme,不要删除问题,以防其他人search。

httpd.conf文件

 -KeepAlive Off +KeepAlive On -MaxKeepAliveRequests 100 +MaxKeepAliveRequests 1000 

如果KeepAliveclosures,Apache会在每次请求后closures连接,这就是为什么我们看到如此多的重新连接和证书。

这些和其他一些性能提示可以在SVN手册中find