サブシステム/プロファイル
JBossは機能をモジュール形式で追加できるような実装になっており、クラスタ機能やメッセージング機能などは拡張機能として本体に追加されています。これらの機能は「サブシステム」と呼ばれ、定義ファイルで利用のON/OFFを切り替えることができます。
JBossには、一般的な用途に応じてサブシステムの定義セットがあらかじめ4パターン用意されており、これらはプロファイルと呼ばれます(表1)。
表1:JBossの4つのプロファイル
default | 一般的に利用されるシステム向け |
ha | クラスタサーバに必要な機能の定義セット |
full | defaultプロファイルにmessaging機能を追加した定義セット |
full-ha | full + haの定義セット |
独自にプロファイルを定義することも可能ですが、特殊な要件がない場合は4つのうちから1つを選択して利用すれば問題ありません(表2)。
表2:プロファイルに含まれる機能
サブシステム | プロファイル |
default | ha | full | full-ha |
logging | ○ | ○ | ○ | ○ |
weld | ○ | ○ | ○ | ○ |
configadmin | ○ | ○ | ○ | ○ |
security | ○ | ○ | ○ | ○ |
ee | ○ | ○ | ○ | ○ |
datasources | ○ | ○ | ○ | ○ |
ejb3 | ○ | ○ | ○ | ○ |
infinispan | ○ | ○ | ○ | ○ |
jpa | ○ | ○ | ○ | ○ |
mail | ○ | ○ | ○ | ○ |
jgroups | | ○ | | ○ |
modcluster | | ○ | | ○ |
cmp | | | ○ | ○ |
jacorb | | | ○ | ○ |
jaxr | | | ○ | ○ |
messaging | | | ○ | ○ |
利用方法
JBoss ASのパッケージは、公式サイトからダウンロードすることができます。パッケージを展開するとbinディレクトリに操作用スクリプトがありますので、まず管理ユーザの追加を行います。
01 | # cd jboss-as-7.1.1.Final/bin/ |
03 | What type of user do you wish to add? |
04 | a) Management User (mgmt-users.properties) |
05 | b) Application User (application-users.properties) |
08 | Enter the details of the new user to add. |
09 | Realm (ManagementRealm) : (空欄で構いません) |
12 | Re-enter Password : password |
13 | The username 'admin' is easy to guess |
14 | Are you sure you want to add user 'admin' yes/no? yes |
15 | About to add user 'admin' for realm 'ManagementRealm' |
16 | Is this correct yes/no? yes |
17 | Added user 'admin' to file '/opt/jboss-as-7.1.1.Final/standalone/configuration/mgmt-users.properties' |
18 | 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系を利用します。
表3:APサーバのスペック
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にカスタマイズを施したものを利用しています。
図4:検証環境
JBoss EAP、JBoss AS、Tomcatに共通の設定として、同時接続数の最大値を512に設定しました。またJVMパラメータとして以下のパラメータを追加しました。
07 | -XX:TargetSurvivorRatio=95 |
08 | -XX:MaxTenuringThreshold=15 |
10 | -XX:+UseConcMarkSweepGC |
11 | -XX:+CMSClassUnloadingEnabled |
12 | -XX:+CMSIncrementalMode |
13 | -XX:+CMSIncrementalPacing |
14 | -XX:+CMSParallelRemarkEnabled |
16 | -XX:+UseAdaptiveGCBoundary |
18 | -XX:+OptimizeStringConcat |