JBossクラスタの概要と性能比較
JBossとTomcatのクラスタ性能比較
クラスタ環境で性能が異なるかを確認するために、第1回と同様JBoss EAPとJBoss AS、Apache Tomcatの3つでスループットを比較しました。
検証環境
JBossの管理モードはスタンドアロンモードとし、haプロファイルを使用します。サーバのスペック、JVMパラメータ、サンプルアプリケーションはシングル構成の性能テスト時と同じです(表6、図4)。
APサーバ | OS | CPU | メモリ |
---|---|---|---|
Apache Tomcat 7.0.53 | CentOS 6.5(x64) | 1vCPU | 1GB |
JBoss EAP 6.2.0 | CentOS 6.5(x64) | 1vCPU | 1GB |
JBoss AS 7.1.1 | CentOS 6.5(x64) | 1vCPU | 1GB |
クライアント端末、Webサーバが性能のボトルネックにならないよう、それぞれ2台ずつ用意しています。コネクタとしてはmod_jkを利用し、APサーバの台数は1台から4台まで増やして計測しました。
コネクタの設定は、表7のようにしています。
項目 | 設定 |
---|---|
ロードバランシング | セッション数によるラウンドロビン |
スティッキーセッション | 有効 |
負荷試験は3回実施し、3回の平均を比較します。
セッションレプリケーションによる性能の違いを見るために、APサーバのレプリケーション機能を無効/有効にした場合のスループットを比較しました。
レプリケーション無効の場合のスループット比較
レプリケーションを無効にした場合のスループットは、Tomcatが最も高く、JBoss EAP/ASについてはほぼ同等の性能となりました。セッションレプリケーションを行わないため、APサーバ台数の増加に伴いクラスタとしての処理性能も増加するという結果になります。
またスループットの増加量に着目すると、TomcatはJBoss EAP/ASと比較して台数が増加してもスループットの低下が少ないということがわかります(図6)。
レプリケーションを有効にした場合のスループット比較
セッションレプリケーションの設定を表8のようにして、テストを実施しました。
項目 | 設定 |
---|---|
キャッシュモード | クラスタ全台に複製(JBoss:Replication、Tomcat:DeltaManager) |
同期モード | 非同期 |
JBoss EAP/ASでは、APサーバを2台にしてもスループットは1台構成とほぼ変わらず、3台目以降からスループットが増加するという結果になりました。ノード数が2の場合は、セッションレプリケーションによるスループットの低下とサーバ台数増加によるスループットの向上が相殺されているものと推測されます。
セッションレプリケーションが有効の場合は、無効の場合と比べてスループットの増加量が小さいのはどのAPサーバも同様ですが、3台以降に着目してみるとJBoss EAPはTomcatと比べてスループットの増加量の低下が少ないということがわかります。
各APサーバのスループットを、クラスタノードが1台の場合を1とした相対値でグラフにしたものが図9です。
JBoss ASは4ノードクラスタでも1.5台分ほどの性能しか出ないため、性能向上という観点からはスケールアウトのメリットはあまり期待できないと言えます。一方JBoss EAP、Tomcatは3ノードクラスタでおよそ2台分、4ノードクラスタではおよそ2.5台分の性能となることがわかりました。
結果の考察
クラスタ構成でのスループットを比較しましたが、セッションレプリケーションが有効の場合はTomcat、JBoss EAP、JBoss ASの順にスループットが高いという結果になりました。JBoss ASはクラスタ化による性能向上はあまり見込めないため、検証目的での利用にとどめておいた方がよさそうです。またJBoss EAP、Tomcatにおいても、クラスタノードの増加によりシステムとしてどれくらい性能向上に反映されるかは、サイジングの際に注意すべきポイントと言えます。
最後に
2回にわたってJBossの機能や性能について紹介しましたが、実際にJBossを利用する場合は稼働するJavaアプリケーションの開発や移行といった作業が発生します。JBossコミュニティには他環境からのアプリケーション移行手法や診断ツールも公開されていますので、JBossを採用される際には、参考にしていただければと思います。