|
||||||||||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||||||||||
| SPECjAppServer2004への適用結果 | ||||||||||||||||||||
|
1つの事例として、SPECjAppServer2004を用いて、負荷が変動した時に生ずるアプリケーションの内部動作の変化を、EJB Profilerを用いて測定した結果を説明する。 アプリケーションサーバは1台構成とし、負荷が低い場合と高い場合においてSPECjAppServer2004を実行させ、開始から終了までに実行されたすべてのメソッドについて、実行回数、ならびに平均実行時間を取得した。 メソッドの実行回数と平均実行時間のそれぞれについて、大きい順に並び替えてグラフ化したものが図1および図2である。図中の「#」で始まる数字はメソッドを識別するために便宜上割り当てた数字であり、SPECjAppServer2004自体が持つ情報ではない。 ![]() 図1:実行回数の割合 ![]() 図2:平均実行時間の割合 結果のうち、メソッド実行回数に着目してみる。図1から、実行回数の多いメソッドの上位15メソッドだけで、全体の約6割を占めていることがわかる。中でも#82のメソッドが全体の約2〜3割を占めている。 #82のメソッドを調査した結果、閲覧するユーザに価格や割引等の情報を一覧として返すものであり、情報を格納するデータベースに直接アクセスするメソッドであることがわかった。ユーザ・アクセスの入り口となるアプリケーションから直接アクセスされる部分で実装されており、呼び出される頻度は極めて高い。ただし、平均実行時間は非常に小さく、処理性能のボトルネックにはなり難いと思われる。 次に、メソッド平均実行時間に着目してみる。図2から、平均実行時間の大きいメソッドの上位15メソッドだけで、全体の約7割を占めていることがわかる。 実行回数も加味して、これらのメソッドを再ソートしたところ、#69および#63のメソッドが平均実行時間も実行回数も大きいことがわかった。これらのメソッドを仔細に調査した結果、データベースのテーブルに存在するデータにアクセスする部分により、実行時間の大半が占められていることがわかった。各データへのアクセス時間は小さいが、膨大な数のデータに繰り返しアクセスするロジックとなっているため、メソッド全体の実行時間が大きくなっているものと思われる。 このように、EJB Profilerを用いると、実行回数や平均実行時間の側面から、性能上の阻害要因となりそうなメソッドを抽出できる。そして、抽出した個々のメソッドに対して動作要因等を照合することにより、効果的なチューニングが可能になると期待できる。 |
||||||||||||||||||||
|
前のページ 1 2 3 4 次のページ |
||||||||||||||||||||
|
|
||||||||||||||||||||
|
|
||||||||||||||||||||
|
||||||||||||||||||||
|
|
||||||||||||||||||||
|
||||||||||||||||||||
|
|
||||||||||||||||||||
|
||||||||||||||||||||



