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

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

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

       性能に関するサーバ設定はほぼデフォルト
    • Tomcat mod_jk2 web server connector 2.0.4 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)
    • Server PC3 : Dell Optiplex GX240 (CPU:Pen4-B 1.8GHz、Memory:1GB)
    • Client PC1 : VAIO PCG-V505T2/P (CPU:MobilePen4 2.2GHz、Memory:1GB)
  4. 調査方法
    • TestCase
      1. Apache AXISを利用したSOAP Webサービスに対して、異なる引数パラメータをもった3種類のリクエストを順番にローテーションさせます。

        静的コンテンツと比べて、全体的に遅いのは、このWebサービスリクエスト毎に3回ずつDB接続しているからです。(「アクセスログを記録」「リクエスタ認証」「アプリデータ取得」)
      2. DBCP(Database Connection Pool)は、Webアプリ-DB毎に8本(固定)
    • Stress Tool設定
      1. Stress Level (threads):4, 8, 16, 24 (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. Tomcat 1台の場合
      • thread数 4、25 requests/s、CPU 60%(Tomcat5)
      • thread数 8、38 requests/s、CPU 97%(Tomcat5)
      • thread数 12、40 requests/s、CPU 100%(Tomcat5)
      • thread数 16、エラー25件 正常2340件 {39 requests/s、CPU 100%(Tomcat5)}
    2. Tomcat 2台(RoundRobin 1:1)の場合
      • thread数 4、36 requests/s、CPU 33%(Tomcat5)
      • thread数 8、51 requests/s、CPU 55%(Tomcat5)
      • thread数 12、67 requests/s、CPU 90%(Tomcat5)
      • thread数 16、78 requests/s、CPU 100%(Tomcat5)
      • thread数 20、80 requests/s、CPU 100%(Tomcat5)
      • thread数 24、エラー8件 正常4649件 {77 requests/s、CPU 100%(Tomcat5)}
    3. Tomcat 3台(RoundRobin 1:1;1)の場合
      • thread数 4、37 requests/s、CPU 20%(Tomcat5)
      • thread数 8、69 requests/s、CPU 40%(Tomcat5)
      • thread数 12、84 requests/s、CPU 60%(Tomcat5)
      • thread数 16、100 requests/s、CPU 80%(Tomcat5)
      • thread数 20、103 requests/s、CPU 80%(Tomcat5)
      • thread数 24、97 requests/s、CPU 80%(Tomcat5)
      • thread数 28、104 requests/s、CPU 80%(Tomcat5)
        result.png
  6. 考察
    • Tomcatを並列に増やすと、性能も向上することがわかった。
      • 仮に、100requests/sが丸1日続いたとすると、864万requests/dayという計算になります。性能検証における現実的なアクセス予想の考え方は様々ですから、ここでは割愛します。
      • Tomcat 3台時の後半は、TomcatのCPU負荷以外のボトルネックが存在しているので、パフォーマンスに変化が見られないのだと思われる。
    • あとは、信頼性・可用性の検証が必要。
    • 実験中に、「指定した割合でバランシングしない」現象が2度発生した。

   想定システム図

WebLoadBalanceWithOSS.png

 関連


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