SVN over SSL:提交時多次重新連接

SVN over SSL:提交時多次重新連接

我們公司的SVN伺服器是自行設定並託管在EC2上的,速度相當緩慢。該設定基於 Apache 和 mod_dav_svn。還有一個svnserve正在運行,似乎是CI系統使用的。我們可以使用具有伺服器和用戶端憑證的 SSL 來存取儲存庫,我在使用 Wireshark 監視提交時注意到了一件奇怪的事情。

我預計會透過 SSL 握手來建立連接,並且該連接會在會話中重複使用。然而,似乎每 200ms/10kb 就會有一個具有新 SSL 握手的新 TCP 連線(由於憑證會產生比 SVN 流量本身更高的有效負載)。

SVN 提交期間的對話。請注意,每個連接最多傳輸 10kb 的資料。

提交期間的對話

以資料包形式開始提交。據我所知,伺服器會發送加密警報來關閉 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手冊

相關內容