バージョン4以降のApache Tomcatは、「Apache HTTP Serverと同等のHTTPエンジン(Catalina?, Coyote?)を内蔵しているので速い」と言われてますけど、ホントにそうなのか、ちょっとだけ調べてみました。

  1. 調査対象
    • Apache HTTP Server 2.0.49 Windows版(.exe)

       サーバ設定はほぼデフォルト
    • Apache Tomcat 5.0.19 Windows版

       サーバ設定はほぼデフォルト
  2. 調査ツール
  3. 調査PCスペック
    • Server PC : Dell Optiplex GX240 (CPU:Pen4-B 1.8GHz、Memory:1GB)
    • Client PC1: Dell PowerEdge 1600SC (CPU:Pen4-C 2.8GHz * 2、Memory:2GB)
    • Client PC2: VAIO PCG-505T2/P (CPU:MobilePen4 2.2GHz、Memory:1GB)
  4. 調査方法
    • TestCase
      1. HTMLコンテンツのデータ量が少ないケース(Apache2デフォルトのindex.html)
      2. 比較的コンテンツ量が多いケース(窓の杜トップページ、画像が66個)
    • Stress Tool設定
      1. Stress Level (threads):1, 2, 4, 8, 16の5パターン

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

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

         IEでは、HTTP1.1の同時接続数デフォルトは2, HTTP1.0は4
      3. HTTP1.1リクエスト
      4. 1分間のテストを2回行い、結果値が近似であれば平均。近似でなければやり直し。
  5. 調査結果
    1. コンテンツが少ないケース(Client PC1による高負荷)
      • Apache2 : 520 requests/s, CPU使用率 ほぼ常に100%
      • Tomcat5 : 730 requests/s, CPU使用率 ほぼ常に100%
      • ServerのCPU使用率はほぼ常に100%
      • thread数、socket数を変化させても、上記の結果に変動は無かった。
    2. コンテンツが多いケース(Client PC1による高負荷)
      • Apache2 : 504 requests/s, CPU使用率 ほぼ常に100%
      • Tomcat5 : 705 requests/s, CPU使用率 ほぼ常に100%
      • ServerのCPU使用率はほぼ常に100%
      • thread数が2以上のときに、上記の結果で安定
        result01.png
    3. コンテンツが少ないケース(Client PC2による低負荷)
      • Apache2 : 416 requests/s, CPU使用率 70%程度
      • Tomcat5 : 402 requests/s, CPU使用率 55%程度
      • thread数が2以上のときに、上記の結果で安定
    4. コンテンツが多いケース(Client PC2による低負荷)
      • Apache2 : 400 requests/s, CPU使用率 80%程度
      • Tomcat5 : 388 requests/s, CPU使用率 50%程度
      • thread数が2以上のときに、上記の結果で安定
        result02.png
  6. 考察
    • 高負荷時と低負荷時で、リクエスト処理数が逆転している。これは、Apache2の方がCPU使用率が高く、少ない処理数でマシンスペックの上限に達してしまうからと考えられる。今回利用したWindows版のApache2は、デフォルトで多数のmoduleをLoadしているが、その影響があるか?
    • リクエスト返却速度だけに注目するなら、Apache2とTomcat5の差は3%程度で、ほぼ同程度の性能と言ってよいと考える。
    • Linux版で調査したい…

 関連


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