TOP比較データ> JBossクラスタのボトルネックについての考察
OSS評価手法
オープンソースソフトウェアの性能・信頼性評価手法

第3回:JBossと商用APサーバの比較

著者:NTTデータ  西沢 里恵   2005/5/30
前のページ  1  2  3  4
JBossクラスタのボトルネックについての考察

   JBossは1台でもHttpSessionの設定を行うことにより性能が劣化してしまうのは前述の通りだが、ここではさらにスケールアウトしない理由について考察する。

   スケールアウトしない理由については、クラスタ構成時にCPUが使い切れていない(報告書参照)ことから、CPU以外の何らかのボトルネックがあると推測される。JBossクラスタのしくみ上、以下の点がボトルネックになりうる。

HttpSessionレプリケーションの粒度がHttpSession全体(セッション単位)である点
JBossではHttpSession全体をコピーしているため、HttpSession全体のサイズや、内包されるオブジェクトの複雑さにより、シリアライズ/デシリアライズのコストやネットワークトラフィックがボトルネックになる可能性がある
HttpSessionレプリケーションの範囲がJBossクラスタ全体(All-to-All)である点
JBossクラスタ内のJBossサーバの数が増えると、レプリケーション先の個数が増え、その分時間がかかることになる。ネットワークのトラフィックも増大する。そのため、ネットワークがボトルネックになる可能性がある
HttpSessionレプリケーションに同期ポイントが存在する可能性
JBossのHttpSessionレプリケーション時にsynchronizedまたは単一スレッドでしか動作していない箇所が存在し、そのためにスケールアウトしない可能性がある

   今回の評価期間内では真の原因の特定までは行えなかったが、JBossクラスタを改善するためには以下の2つの改善が必要だと考えられる。

  • 1台でもHttpSessionレプリケーションの設定をするだけで性能が大幅に劣化していることから、そもそもの処理を軽くする
  • HttpSessionレプリケーションの範囲や粒度のロジックを改善し、スケールアウトできるためのしくみを実装する

   次に上記の考察のひとつである、HttpSessionレプリケーションの粒度に対する改善の試みを紹介する。


セッション単位/属性単位比較

   JBoss 4.0.0ではHttpSessionレプリケーションの粒度を属性単位に設定した場合、正常に動作しない。これはJBossCacheに依存するバグである(発生するエラーの概要については報告書参照)。

   なお、2005年1月時点で最新のCVSからJBossCacheのソースコードを取得し、若干の修正を入れてみたところ、HttpSessionのレプリケーションの粒度を属性単位に設定しても動作するようになった。参考までに、JBossクラスタ2台で測定した結果を図6に示す(報告書 Appendix-23 図B.3-5)。図中の「SESSION」の線がセッション単位、「ATTRIBUTE」の線が属性単位の結果である。

JBoss セッション単位/属性単位比較 処理性能
図6:JBoss セッション単位/属性単位比較 処理性能
SPECjAppServer is a trademark of the Standard Performance Evaluation Corp. (SPEC). The SPECjAppServer2004 results or findings in this publication have not been reviewed or approved by SPEC, therefore no comparison nor performance inference can be made against any published SPEC result. The official web site for SPECjAppServer2004 is located at http://www.spec.org/osg/jAppServer2004.

   グラフから、設定を属性単位にすることにより処理性能が大きく改善され、負荷Fまでは理想値上をリニアに伸びていく事がわかる。このことから、JBossの次期バージョンに期待を持たせる結果となった。


まとめ

   今回はHttpSessionレプリケーションで考慮すべき4つの点と、JBossとWebLogicの比較について取り上げた。

   1台での比較ではWebLogicの方が高性能であるという結果になったが、JBossもある程度の負荷までは耐えられるという結果になった。またクラスタ比較では、JBoss 4.0.0はHttpSessionレプリケーションの設定を属性単位で行うことができず、セッション単位に設定すると性能がかなり劣化してしまうという結果になった。

   以上よりJBoss 4.0.0は、クラスタ構成で使用するには時期尚早であるといえる。JBoss 1台でカバーできる範囲での利用、もしくは高信頼性が必要ないシステムでHttpSessionをレプリケーションせずにクラスタを構成して利用するのであれば問題はないだろう。また、前述したようにJBossは今後改善の見込みがあるため、継続的なウォッチングが必要である。

   報告書にはJBossクラスタ/WebLogicクラスタの環境定義、評価手順書、設定ファイル群、TIPS集が含まれており、同様の手順を踏めば今回行った評価を自分で試すことができるようになっている。ベンチマーク測定を行う場合にはぜひ参考にしてほしい。

   次回は「アプリケーション・プログラムの動作解析機能の開発とそれを用いた解析」について紹介する。

前のページ  1  2  3  4


株式会社NTTデータ 西沢 里恵
著者プロフィール
株式会社NTTデータ  西沢 里恵
オープンソース開発センタ 技術開発担当
2004年に(株)NTTデータに入社、今年2年目になったばかり。新人研修終了後、11月から今回の記事で紹介しているOSS推進フォーラムの業務につくことに。技術力が高く、個性的なメンバーに囲まれ、日々刺激を受ける毎日である。


INDEX
第3回:JBossと商用APサーバの比較
  はじめに
  レプリケーションの同期/非同期
  今回のHttpSessionレプリケーションの設定
JBossクラスタのボトルネックについての考察