JBossの歴史と単体での性能比較
サブシステム/プロファイル
JBossは機能をモジュール形式で追加できるような実装になっており、クラスタ機能やメッセージング機能などは拡張機能として本体に追加されています。これらの機能は「サブシステム」と呼ばれ、定義ファイルで利用のON/OFFを切り替えることができます。
JBossには、一般的な用途に応じてサブシステムの定義セットがあらかじめ4パターン用意されており、これらはプロファイルと呼ばれます(表1)。
default | 一般的に利用されるシステム向け |
---|---|
ha | クラスタサーバに必要な機能の定義セット |
full | defaultプロファイルにmessaging機能を追加した定義セット |
full-ha | full + haの定義セット |
独自にプロファイルを定義することも可能ですが、特殊な要件がない場合は4つのうちから1つを選択して利用すれば問題ありません(表2)。
サブシステム | プロファイル | |||
---|---|---|---|---|
default | ha | full | full-ha | |
logging | ○ | ○ | ○ | ○ |
weld | ○ | ○ | ○ | ○ |
configadmin | ○ | ○ | ○ | ○ |
security | ○ | ○ | ○ | ○ |
ee | ○ | ○ | ○ | ○ |
datasources | ○ | ○ | ○ | ○ |
ejb3 | ○ | ○ | ○ | ○ |
infinispan | ○ | ○ | ○ | ○ |
jpa | ○ | ○ | ○ | ○ |
○ | ○ | ○ | ○ | |
jgroups | ○ | ○ | ||
modcluster | ○ | ○ | ||
cmp | ○ | ○ | ||
jacorb | ○ | ○ | ||
jaxr | ○ | ○ | ||
messaging | ○ | ○ |
利用方法
JBoss ASのパッケージは、公式サイトからダウンロードすることができます。パッケージを展開するとbinディレクトリに操作用スクリプトがありますので、まず管理ユーザの追加を行います。
# cd jboss-as-7.1.1.Final/bin/ # ./add-user.sh What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a): a Enter the details of the new user to add. Realm (ManagementRealm) : (空欄で構いません) Username : admin Password : password Re-enter Password : password The username 'admin' is easy to guess Are you sure you want to add user 'admin' yes/no? yes About to add user 'admin' for realm 'ManagementRealm' Is this correct yes/no? yes Added user 'admin' to file '/opt/jboss-as-7.1.1.Final/standalone/configuration/mgmt-users.properties' Added user 'admin' to file '/opt/jboss-as-7.1.1.Final/domain/configuration/mgmt-users.properties'
スタンドアロンモードを利用する場合は standalone/configuration/ ディレクトリにある設定ファイルを編集して bin/standalone.sh スクリプトから起動、ドメインモードを利用する場合は domain/configuration/ ディレクトリにある設定ファイルを編集して bin/domain.sh スクリプトから起動するようになります。
過去にJBossを利用されたことのある方であればご存知かと思いますが、以前は散在していた設定ファイルがJBoss AS 7.x/EAP 6.x からは管理モードごとに集約されており、管理が非常に楽になりました。この点もAPサーバとして人気がある一つのポイントではないかと思います。
JBossとTomcatの単体性能比較
アプリケーションサーバ単体でどれくらい性能が異なるのかを確認するために、JBoss EAPとJBoss AS、そしてオープンソースとしてメジャーなAPサーバであるApache Tomcatの3つで、性能を比較してみます。検証内容は、オーソドックスなスループットとレスポンスタイムの比較としました。
検証環境
JBoss EAPとJBoss ASの違いも見てみるために、JBoss EAPは検証実施時点の最新版である6.2、JBoss ASは6.x系のベースとなっている7.1の最新版を利用します。Tomcatについては、現在広く利用されているバージョン7系を利用します。
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 |
各APサーバへは同じサンプルアプリケーションをデプロイし、クライアント端末上で実行するApache JMeterからサンプルアプリケーションに対してアクセスすることで、負荷をかけます。APサーバ上で稼働するアプリケーションは、SpringフレームワークのデモアプリケーションJPetStore(ショッピングカートアプリ)をベースにしたベンチマークスイートであるJBentoStoreにカスタマイズを施したものを利用しています。
JBoss EAP、JBoss AS、Tomcatに共通の設定として、同時接続数の最大値を512に設定しました。またJVMパラメータとして以下のパラメータを追加しました。
-Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m -XX:NewRatio=2 -Xss1m -XX:TargetSurvivorRatio=95 -XX:MaxTenuringThreshold=15 -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC -XX:+UseAdaptiveGCBoundary -XX:+UseBiasedLocking -XX:+OptimizeStringConcat