はじめに
当連載の第7回「Javaアプリケーションサーバのパフォーマンス比較」ではサンプルアプリケーションを用意して、HTTPセッションレプリケーションの性能をTomcat/JBoss/WebLogicの各プラットフォームで比較しました。
JBossが性能面で劣る結果となってしまいましたが、今回は番外編としてJBossにチューニングを施し、どこまで性能を伸ばせるかをみていきます。
テスト環境、アプリケーションについては第7回と同じです。
モジュールの最新化
JBossのクラスタリングの鍵になるモジュールは、分散キャッシュを実現するJBossCacheと通信基盤であるJGroupsです。今回テスト対象としているJBoss 4.0.3SP1が持つ各モジュールのバージョンはJBossCacheが1.2.3.1、JGroupsが2.2.7です。まずはこれらのモジュールの最新バージョン(2005年12月現在)を利用しましょう。
緊密に統合されたソフトウェアであればモジュールのJARファイルを差し替えるなどということは不可能、あるいは推奨されないケースが多いのです が、JBossは各モジュールの疎結合を意識して開発されているため依存性の問題はありません(JBossCache 1.2.4はJGroupsに対してのみ依存性があり、JGroups 2.2.7と2.2.8に対応しています)。
JBossCacheの差し替え
まずは、JBossCache1.2.4のファイルを取得します。以下のURLからjboss-cache-minimal-dist.zipをダウンロードし、アーカイブを展開してください。
JBoss.com - JBoss Cache Downloads
http://www.jboss.org/products/jbosscache/downloads
※対象ページ閉鎖
libディレクトリの下にあるjboss-cache.jarが目的のJARファイルです。このJARファイルを"JBossインストールディレクトリ/server/all/lib/jboss-cache.jar"と差し替えてください。
JGroupsの差し替え
JGroups2.2.8のファイルを取得します。以下のURLからJGroups-2.2.8.bin.zipをダウンロードし、アーカイブを展開してください(現在の最新バージョンは2.2.9ですが、JBossCache1.2.4の対応バージョンがJGroups2.2.8までなので、今回は2.2.8を使用します)。
JGroups - The JGroups Project
http://www.jgroups.org/javagroupsnew/docs/index.html
展開ディレクトリの下にあるjgroups-all.jarが目的のJARファイルです。このファイルを"JBossインストールディレクトリ/server/all/lib/jgroups.jar"と差し替えてください(名前はjgroups.jarに変更しておくとよいでしょう)。
モジュールの最新化後のテストの結果
JARファイルの変更後、JBossを起動して再度テストを行いました。結果は以下の通りです。

図1:JAR更新、1KB、レスポンスタイム

図2:JAR更新、1KB、スループット

図3:JAR更新、100KB、レスポンスタイム

図4:JAR更新、100KB、スループット
大幅な改善が得られました。セッションオブジェクトのサイズが1KBの場合にはTomcatに迫る性能を見せており、100ユーザまではレプリケー ションによる影響を感じさせません。一方セッションオブジェクトのサイズが100KBの場合には幾分効果があるものの、まだまだTomcatにはおよびません。