SVN over SSL: コミット時に何度も再接続する

SVN over SSL: コミット時に何度も再接続する

弊社の SVN サーバーは、独自にセットアップして EC2 でホストしていますが、かなり遅いです。セットアップは Apache と mod_dav_svn に基づいています。CI システムで使用されていると思われる svnserve も実行されています。サーバー証明書とクライアント証明書を使用して SSL を使用してリポジトリにアクセスできますが、Wireshark でコミットを監視しているときに奇妙なことに気付きました。

接続を確立するために SSL ハンドシェイクがあり、その接続がセッション全体で再利用されると予想していました。しかし、200 ミリ秒/10 KB ごとに新しい 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

わかりました。再接続の解決策はすでに見つけたので、他の誰かが検索した場合に備えて質問を削除しません。

confファイル

-KeepAlive Off
+KeepAlive On

-MaxKeepAliveRequests 100
+MaxKeepAliveRequests 1000

KeepAlive がオフの場合、Apache は各リクエスト後に接続を閉じるため、再接続と証明書が多数発生しました。

これらとその他のパフォーマンスのヒントは、SVN マニュアル

関連情報