web-dev-qa-db-ja.com

Tomcat 6SSLのパフォーマンスを最適化する方法

Slicehost.comのUbuntu 2GBスライスでTomcat 6を実行しています

JSPアプリケーションfwiwはOpenClinica 3.1です。ご覧のとおり、この本でSSLを実装しました。

   <Connector port="8443"  
           scheme="https"   SSLEnabled="true"
           keystorePass="XXXXX" keystoreFile="XXXXX" 
    maxKeepAliveRequests="0"
    sessionCacheSize="0" sessionTimeout="0"  compression="on"   maxThreads="500"
    clientAuth="false"  sslProtocol="TLS" />

問題は、Open Clinica Javaアプリケーションがページを構築するために多数のHTTPリクエストを実行することです-Chrome開発者ツールを使用して、70の間を見ることができます-典型的なページに対する80のリクエスト。

各リクエストにSSLハンドシェイクを追加すると、ネットワーク遅延が増えると、アプリケーションの応答時間が長くなります。 FWIW(クライアントユーザーはイスラエル、ヨーロッパ、および米国にいます)であるため、ユーザーの隣でローカルサーバーを実行するオプションは実際には実行可能ではありません。私はスライスホースがアメリカにあるので-イスラエルへのネットワーク待ち時間は貧弱ですが、サーバーのHTTPパフォーマンスは十分に許容できるので-私たちはもっとうまくできるはずだと感じています。

Sslハンドシェイクを最小限に抑えるために、上記のコネクタ定義に見られるように、無制限のsessionCacheSizeとSessionTimeoutを定義しました。

ただし、クライアント側でssldumpを実行すると、まだ多くのハンドシェイクが行われていることがわかります。これは、Tomcatがこれらのパラメーターを事実上無視していることを示唆しているようです。

サーバーはストレスを受けていません-同時ユーザーが5人の場合、約100MBの空きメモリがあり、スワッピングはほとんどありません。

6
Danny Lieberman

各リソースでのSSLハンドシェイクは、HTTPの キープアライブ 機能が機能していないことを示す兆候です。

キープアライブでは、TCP接続に対して単一のSSLハンドシェイクが実行され、その単一の接続を介して複数のリソースを要求できます。最近のブラウザーは、複数のTCP接続は、読み込みが遅いリソースのボトルネックを回避するため、複数のハンドシェイクが表示されますが、キープアライブをオフにした場合よりも確実に少なくなります。

maxKeepAliveRequests="0"はキープアライブをオフにしていると思います(実際、0の動作に関するドキュメントは見つかりません。1はキープアライブを無効にし、-1は制限を設定しません-0も有効な無効と想定しています)。

キープアライブを無効にする場合は、再検討することをお勧めします。無制限に設定する場合は、そのオプションを-1に変更してください。

5
Shane Madden

キープアライブは明らかに最大のメリットですが、それでも遅延を減らす必要がある場合は、APRネイティブコネクタを使用していることを確認する必要があります。

http://Tomcat.Apache.org/Tomcat-6.0-doc/config/http.html#Connector Comparison

0
Ochoto

フロントエンドのAJPコネクタでApacheリバースプロキシを使用することをお勧めします。 ApacheにSSLを配置し、プライベートリンク(localhostなど)を介してクリアテキストでTomcatに接続します。

それが得意なもの(多くの豪華なオプションがあるWebサーバー)にはApacheを、それが得意なもの(Javaアプリケーション)にはTomcatを使用してください。

0
bahamat