APサーバのチューニング項目を知るJ2EEパフォーマンスチューニング(3)(2/6 ページ)

» 2002年03月30日 00時00分 公開
[浅井真日本BEAシステムズ]

(1)実行スレッド

実行スレッドとリーダースレッドのチューニングポイント

 まず初めにWLS61での内部スレッド動作を見ていきます(図2)

図2 図2

 この図はあくまでWLS61の内部動作をイメージするために作成されたものです。すべてのアプリケーション・サーバでこのとおりになっているとは限りませんが、スレッドがWLS61内部でどのような動きをしているかを知るうえでとても役に立ちます。この図の見方としては、下から上に処理が流れていきます。

 WLS61内部でのリクエスト処理の動作を、順を追って見てみましょう。

  1. クライアントからのリクエストが下からやってきます(Request
  2. リクエストをSocket Muxer(ソケットマルチプレクサ)が受けます
  3. Socketで受けたリクエストに対してSocket Reader Thread(リーダースレッド)が割りついて、リクエストをExecute Queue(実行キュー)に渡します。この動作のように、リーダースレッドは、リクエストを実行キューまで運ぶことが役目で、運んだ後はまた元に戻り、別のリクエストを運べるように待機します
  4. 実行キューに入れられたリクエストは、処理されるまで順番に並びます
  5. 順番がくるとExecute Thread(実行スレッド)がリクエストを取り出し、そのリクエストをサーブレットやEJBなどで実行します

 WLS61内では上記のようなフローでリクエストが処理されます。これを見ると、リーダースレッド/実行スレッドの数、およびその処理スピードが、WLS61の内部処理全体の性能に影響を与えることが分かります。

実行スレッドとリーダースレッドの設定

 では、実際の設定手順を解説します。設定はGUIの管理コンソール画面の[チューニング]から行います(図3)

図3 図3

 WLS61での実行スレッド数のデフォルト値は以下のとおりです。

項目 デフォルト値
スレッド数 15


 ところで、スレッド数は、以下の算式で求められます。

 リーダースレッド数+実行スレッド数=スレッド数

 図中で見ると、Socket Reader Thread(リーダースレッド)の丸の数と、Execute Thread(実行スレッド)の丸の数をすべて加えたものが、このスレッド数に相当します。丸の数を全部数えると18個の丸があり、図の設定ではスレッド数=18に設定されていることになります。

 スレッドの数を多くすれば性能は向上するかというと、そうでもありません。スレッドはCPU性能と深く結び付いているため、スレッド数が性能に与える影響は、一般的に次のようにいわれています。

スレッド数が多すぎる場合 スレッド管理のためのオーバーヘッドが増し、逆に性能が劣化する。CPU使用率がピークに達したような状態では、スレッド数を減らすことで性能が改善する場合もある
スレッド数が少なすぎる場合 CPU使用率の低下と処理待ちを引き起こす可能性がある。このような場合、スレッド数を増やすことで性能が改善することがある

 WLS61のデフォルト値は前述のように15が採用されています。最適なスレッド数はシステム構成(特にCPU数、CPU性能)によりそれぞれ異なります。負荷テストなどでスレッド数の最適値を探っておく必要はありますが、まずは手始めとして15あたりから始めてみるといいでしょう。

WLS61では、複数実行キューの指定が可能になっていますが、その使用方法と条件についてはWLS61ドキュメントを参照してください。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。