以下の3パターンの性能比較を行いました。

  1. Tomcat StandAloneの場合
  2. Apache HTTP ServerとApache Tomcatを同一のPC上に配置し、mod_jk2を使って連携させた場合
  3. Apache HTTP ServerとApache Tomcatを異なるPC上に配置し、mod_jk2を使って連携させた場合
  1. 調査対象
    • Apache HTTP Server 2.0.49 Windows版(.exe)

       性能に関するサーバ設定はほぼデフォルト
    • Apache Tomcat 5.0.19 Windows版

       性能に関するサーバ設定はほぼデフォルト
  2. 調査ツール
  3. 調査PCスペック
    • Server PC1 : Dell Optiplex GX240 (CPU:Pen4-B 1.8GHz、Memory:1GB)
    • Server PC2 : Dell Optiplex GX240 (CPU:Pen4-B 1.8GHz、Memory:1GB)
    • Client PC1 : Dell PowerEdge 1600SC (CPU:Pen4-C 2.8GHz * 2、Memory:2GB)
  4. 調査方法
    • TestCase
      1. Apache AXISを利用したSOAP Webサービスに対して、異なる引数パラメータをもった3種類のリクエストを順番にローテーションさせます。

        静的コンテンツと比べて、全体的に遅いのは、このWebサービスがリクエスト毎に3回ずつDB接続しているからです。(「アクセスログを記録」「リクエスタ認証」「アプリデータ取得」)
    • Stress Tool設定
      1. Stress Level (threads):1, 2, 4, 8 (4パターン+α)

         瞬間同時リクエスト数を想定したパラメータ
      2. Stress multiplier (sockets per thread):2 (1パターン)

         同一クライアントからの同時接続数を想定したパラメータ

         IEでは、HTTP1.1の同時接続数デフォルトは2, HTTP1.0は4
      3. HTTP1.1リクエスト
      4. 1分間のテストを2回行い、結果値が近似であれば平均。近似でなければやり直し。
      5. 試験中にWebサービス簡易リクエスタから手動で数回リクエストし、正常に返ってくることを確認する。
  5. 調査結果
    1. Tomcat5 StandAloneの場合
      • 35 requests/s
      • CPU使用率 ほぼ常に100%
      • thread数を変化させても、上記の結果に変動は無かった。
    2. Apache2とTomcat5を同一のPC上で連携させた場合
      • thread数 1~2のとき、36 requests/s
      • thread数 4~のとき、33 requests/s
      • CPU使用率 ほぼ常に100%
    3. Apache2とTomcat5を異なるPC上で連携させた場合
      • thread数 1、 9 requests/s、CPU 0%(Apache2), 20%(Tomcat5)
      • thread数 2、18 requests/s、CPU 0%(Apache2), 45%(Tomcat5)
      • thread数 4、27 requests/s、CPU 0%(Apache2), 55~70%(Tomcat5)
      • thread数 8、36 requests/s、CPU 5~10%(Apache2), 90%(Tomcat5)
      • thread数 12、37 requests/s、CPU 10%(Apache2), 95%(Tomcat5)
      • thread数 16、37 requests/s、CPU 10%(Apache2), 95%(Tomcat5)
      • thread数 24 -> Internal Server Error(500) が発生
  6. 考察
    • Tomcat5 StandAloneの場合と同一のPC上で連携させた場合とでは、ほぼ同様の結果となった。
    • Apache2とTomcat5を異なるPC上で連携させた場合では、同時接続数が少ないときに性能が発揮されない。
    • [余談] 今回は公開されているバイナリ版のmod_jk2 for Windowsを利用した。mod_jk2のLinux版はFedora-Core-1用とSuSE9.0用のバイナリしか公開されていないので、他のディストリビューションで利用する際にはmod_jk2のソースをコンパイルする必要がある。
    • [余談] コンパイル時に気がつくことだが、mod_jk2.0.4はTomcat5に正式に対応しているわけではなさそうだ。
    • Linux版で調査しないとね。

 関連


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS