システムを構築、運用するための手順について説明します。
Windows Server 2008ではUAC(User Account Control)によりビルトインアカウントを除くユーザに対し特権の制限がかかります。 WebOTX ASではドメインの運用操作にはOSの管理者特権を必要とするため、 特権昇格したコマンドプロンプトからドメインの運用操作を実行する必要があります。
ただし、WebOTX ASで管理者特権のチェックを行わせたくない場合はOSの環境変数に「AS_NO_UAC_CHECK=YES」を 設定することでWebOTX ASで行う全てのUACに対する特権チェックを回避することが出来ます。
特権昇格したコマンドプロンプトを起動するにはコマンドプロンプトのショートカットの 右クリックメニューから「管理者として実行」を選択して起動する方法などがあります。
WebOTXのドメインを作成および削除する方法について説明します。 作成・削除時はWebOTXサービスが起動している必要があります。
Windows Server 2008ではドメインの作成・削除は特権昇格したコマンドプロンプトから実行する必要があります。 詳しくは[ 3.1. ドメインの運用操作の前に ] を参照してください。
otxadmin create-domainコマンドで生成します。その際、新規ドメインの設定を記述した<ドメイン名>.propertiesファイルが必要になります。
新規にsampleドメインを作成する場合の手順を以下に示します。
otxadminコマンドを実行しドメインを作成します。このとき管理ドメインに接続する必要があります。 管理ドメインの起動方法は[3.4. ドメインの起動・停止 > 3.4.2. 管理ドメインの起動/停止 ] を確認してください。
otxadmin > login --user <管理ドメインのユーザ名> ---password <管理ドメインのパスワード> --port <管理ドメインのポート番号> otxadmin > create-domain --file=sample.properties sample ドメインの作成を開始します。この処理に数分以上かかる場合がありますが、処理が完了するまでしばらくそのままお待ちください。 コマンド create-domain は正常に実行されました。
なお、管理ドメインの既定値は以下の通りです。
パラメータ | 既定値 |
---|---|
管理ドメインのユーザ | admin |
管理ドメインのパスワード | adminadmin |
管理ドメインのポート | 6202 |
ドメインディレクトリの作成先を${AS_INSTALL}/domains 以外にする場合、create-domainコマンドを実行時 --domaindir オプションを指定します。
otxadmin > login --user <管理ドメインのユーザ名> ---password <管理ドメインのパスワード> --port <管理ドメインのポート番号> otxadmin > create-domain --file=<ドメイン名>.properties --domaindir=<作成先ディレクトリ名> sample ドメインの作成を開始します。この処理に数分以上かかる場合がありますが、処理が完了するまでしばらくそのままお待ちください。 コマンド create-domain は正常に実行されました。
otxadmin > login --user <管理ドメインのユーザ名> ---password <管理ドメインのパスワード> --port <管理ドメインのポート番号> otxadmin > start-domain --remote <ドメイン名>
統合運用管理ツールでドメインを作成する場合、既に起動している管理ドメインに接続する必要があります。統合運用管理ツールの起動等の操作は[ 運用ツールガイド > 2.統合運用管理ツール(WebOTX Administrator) ] を確認してください
図3.2.1-1
図3.2.1-2
図3.2.1-3
図3.2.1-4
図3.2.1-5
ドメインの作成時に指定する<ドメイン名>.propertiesファイルの設定をエディタで編集してください。
なお、設定可能な項目は、コメントアウトされています。チューニング機能を利用する場合は [ 3.2. ドメインの作成・削除 > 3.2.1. ドメインの作成 > 3.2.1.6. propertiesファイル ] を参考に編集してください。
: : ## Tuning ### # If you want to use the tuning feature, set following parameters. # tuning-attributes.enabled=false # tuning-attributes.webApplication=true # tuning-attributes.ejbApplication=false # tuning-attributes.corbaApplication=false # tuning-attributes.clients= # tuning-attributes.servers=1 # tuning-attributes.connectionsPerClient=1 # tuning-attributes.connectTime= # tuning-attributes.transactionsPerSecond= # tuning-attributes.requestsPerTransaction=1 # tuning-attributes.requestProcessingTime=0 # tuning-attributes.highLoadPolicy=1
ドメイン作成時に表示されるウィンドウの[チューニング]タブを選択し、必要なパラメータを入力してください
図3.2.1-6
ドメインディレクトリの作成先を${AS_INSTALL}/domains 以外にする場合、${AS_INSTALL}/domains/WebOTXAdmin/configのserver.policyファイルをエディタで編集します。「Basicset of required permissions granted to all remainingcode」ブロックの「java.io.FilePermission」の定義に「execute」を追記します。
これは管理ドメインから${AS_INSTALL}/domains以外に配置されたファイルを実行するためです。
//
// Copyright (C) 1998 ・・・
//
・
・
・
// Basic set of required permissions granted to all remaining code
grant {
permission java.lang.RuntimePermission "loadLibrary.*";
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "*", "connect";
permission java.io.FilePermission "<<ALL FILES>>", "read,write,execute";
・
・
・
編集が終わったらファイルを保存し、設定を反映させるためにWebOTXサービスを再起動します。サービスの起動・停止方法については [ 1. Windowsサービスとrcスクリプト > 1.2. サービスの起動・停止方法 ] を参照してください。
サーバOSとしてLinuxを利用している場合、次の設定がされている環境ではRMI通信によるリモート接続が行えないため、 運用管理ツールからドメインに接続できないという問題が発生します。
上記の条件に当てはまる場合、作成したドメインに対して次の手順でJavaシステムプロパティを設定してください。
otxadmin> login --user <ユーザ名> --password <ユーザパスワード> --port <ポート番号>
otxadmin> create-jvm-options -Djava.rmi.server.hostname=<ホスト名>
WebOTXが動作するサーバが複数のネットワークカードを利用している場合、運用管理ツールからドメインへの接続が失敗することがあります。該当する環境を利用している場合、作成したドメインに対して次の手順でJavaシステムプロパティを設定してください。
otxadmin> login --user <ユーザ名> --password <ユーザパスワード> --port <ポート番号>
otxadmin> create-jvm-options -Djava.rmi.server.hostname=<ホスト名、または、IPアドレス>
<ドメイン名>.propertiesファイルで設定する各プロパティについて説明します。
実際に<ドメイン名>.propertiesに記述されるのはプレフィックスを含めた完全プロパティ名です。
たとえばドメイン設定項目のhostnameの完全プロパティ名はdomain.hostnameになります。
プロパティ名 | 説明 | domain1の既定値 |
---|---|---|
ドメイン設定項目(プレフィックス: domain.) | ||
hostname | ホスト名 ※ホスト名に使える文字は、0-9の数字、A-zのアルファベット、"." "-" "_"(アンダースコア)になります。 |
localhost |
name | ドメイン名 ※必ずドメイン間で重複しないよう一意に設定してください。 ※次に示す単語はWebOTXの予約語のため、ドメイン名に用いることはできません。 WebOTXAdmin、cluster、proxy |
domain1 |
admin.user | 管理ドメインに対して定義されている管理ユーザ | admin |
admin.password | 管理ユーザのパスワード ※8文字以上に設定してください。 |
adminadmin |
admin.port | 運用管理エージェントが利用するJRMPのポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
6212 |
domain.admin.jmxmp.port | 運用管理エージェントが利用するJMXMPのポート番号 ※下位互換用 必ずドメイン間で重複しないよう一意に設定してください。 |
6712 |
instance.port | HTTPサーバインスタンスが利用する HTTPの ポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
80 |
https.port | SSLで保護されたHTTPポートの番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
443 |
http.admin.port | Webコンテナが利用する管理コンソール用HTTPポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
5858 |
http.ajp.port | mod_jk2を使用したHTTPサーバ-Webコンテナ連携ポートの番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
8099 |
jms.port | JMS管理サーバが利用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
9700 |
java.debugger.port | Javaデバッグで利用するポート番号。Javaデバッグを有効化した場合に利用します。 ※必ずドメイン間で重複しないよう一意に設定してください。debug-optionsを指定した場合、そちらの内容が優先されます |
9010 |
ipv6-enable | IPv6優先 ※ドメインのJavaシステムプロパティjava.net.preferIPv6Addressesの値に影響します |
false |
サーバライフサイクルモジュール設定(プレフィックス: server.internal-lifecycle-module.) | ||
DBControllerService.enabled | データベースコントローラサービス起動フラグ | true |
ObjectBrokerService.enabled | Object Brokerサービス起動フラグ | true |
TransactionService.enabled | Transactionサービス起動フラグ | true |
JavaEEUtilityLifecycle.enabled | JavaEEUtilityLifecycle起動フラグ | true |
JMSProvider.enabled | JMSサービス起動フラグ | true |
WebContainerService.enabled | Webコンテナサービス起動フラグ | true |
WebServerService.enabled | Webサーバ(Apacheベース)サービス起動フラグ | true |
TPMonitorManagerService. enabled |
TPモニタ・マネージャサービス起動フラグ Expressの場合は無視されます。 |
true |
Javaデバッグオプション設定(プレフィックス: server.java-config.) | ||
debug-options | Javaデバッグオプション | -Xdebug -Xrunjdwp:transport=dt_socket, server=y,suspend=n,address=4004 |
debug-enabled | デバッグモードフラグ | false |
Object Broker サービス設定(プレフィックス: server.objectbrokerservice.*) | ||
oadj.Port | oadjが使用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
9826 |
corbaloc.CorbalocDefaultPort | URLでポート番号を指定しなかったときの値 ※必ずドメイン間で重複しないよう一意に設定してください。 |
2809 |
corbaloc.CorbalocServerPort | corbalocサーバが使用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
9827 |
namesv.NameServicePort | 名前サーバが使用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
2809 |
namesv. NameServiceRoundRobin |
名前サーバのラウンドロビン拡張機能 | true |
irsv. InterfaceRepositoryPort | インタフェースリポジトリが使用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
9830 |
oad.OadPort | 接続先のoadが使用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
9825 |
cnamesv. CacheNameServicePort |
キャッシュ名前サーバが使用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 ※キャッシュ名前サーバはEnterpriseでのみインストールされます。 |
9829 |
Webコンテナサービス設定(プレフィックス: server.web-container.) | ||
processMultiplicity | Webコンテナ 動作モード
|
|
advanced-mode-protocol | WebコンテナとWebサーバの連携モード WebコンテナとWebサーバの連携モードを指定します。Webコンテナ動作モードでアドバンスドモードを指定した場合にのみ有効です。
|
ajp |
TPモニタマネージャサービス設定(プレフィックス: tpsystem.) | ||
systemNameW | ドメインで動作するTPシステム名 8文字以内の英数字で指定 ※必ずドメイン間で重複しないよう一意に設定してください。 |
MySystem |
systemID | TPシステムを一意に識別するID 0-255の間で指定 ※必ずドメイン間で重複しないよう一意に設定してください。 |
0 |
downloaderManagerService.portNumber | ダウンローダ管理サービスが使用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
5202 |
IIOPListener. listenerPortNumber |
WebOTX IIOPリスナが使用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
5151 |
OLFTPListener. listenerPortNumber |
WebOTX OLFリスナが使用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
5251 |
IIOPListener. iiopAsyncPort |
クライアント管理ライブラリが使用するポート番号 ※必ずドメイン間で重複しないよう一意に設定してください。 |
5220 |
Transactionサービス設定(プレフィックス: server.transactionservice.*) | ||
rcs-cpp-port | C++版のRCSが使用するポート番号(Expressでは使用されません)。 ※必ずドメイン間で重複しないよう一意に設定してください。 |
5965 |
JMSサービス設定(プレフィックス: domain.jms.*) | ||
port | JMSサーバが利用するポート番号。 ※必ずドメイン間で重複しないよう一意に設定してください。 |
9700 |
user.port | JMSサーバのコネクションサービス用ポート番号。 ※必ずドメイン間で重複しないよう一意に設定してください。 |
9701 |
admin.port | JMSサーバの管理コネクションサービス用ポート番号。 ※必ずドメイン間で重複しないよう一意に設定してください。 |
9702 |
下記の表では<ドメイン名>.propertiesに記載するプロパティのうち、チューニング機能向けに提供しているプロパティについて記載します。
プロパティ名 | 説明 | domain1の既定値 |
---|---|---|
tuning-attributes.enabled | 自動チューニングを実行する trueが設定された場合、ドメイン作成後、自動的に設定のチューニングを実行します。 |
false |
tuning-attributes.webApplication | Webアプリケーションを使用する 作成したドメイン上でWebアプリケーションを動作させる場合、trueを設定してください。 |
false |
tuning-attributes.ejbApplication | EJBアプリケーションを使用する 作成したドメイン上でEJBアプリケーションを動作させる場合、trueを設定してください。 |
false |
tuning-attributes.corbaApplication | CORBAアプリケーションを使用する 作成したドメイン上でCORBAアプリケーションを動作させる場合、trueを設定してください。 |
false |
tuning-attributes.clients | クライアント数 クライアントの数を指定します。 |
なし |
tuning-attributes.servers | 縮退時のサーバ台数 縮退時のサーバの台数を指定します。 |
1 |
tuning-attributes.connectionsPerClient | 端末ごとの接続数 1つのクライアント端末から、Webサーバに同時に接続する数を指定します。ブラウザによって値が変わります。例えば、IEの場合IE7以下なら2、IE8以上は6になります |
1 |
tuning-attributes.connectTime | 接続時間 1トランザクションの開始から完了までにかかる時間 。 (単位 : 秒) |
なし |
tuning-attributes.transactionsPerSecond | 1クライアントの1秒当たりのトランザクション数(Tr/秒) 1クライアントで1秒間に発生するトランザクションの数。トランザクションが発生する間隔(秒)から算出できる。 (単位 : Tr/秒) |
なし |
tuning-attributes.requestsPerTransaction | 1トランザクションあたりのリクエスト数 1トランザクション(1回の操作)あたりに発生するリクエストの数を指定します。1画面中に複数の画像やCSSなどが含まれている場合、それらの数を追加した値となります。 |
1 |
tuning-attributes.requestProcessingTime | 1リクエストの平均処理時間 | 0 |
tuning-attributes.highLoadPolicy | 高負荷時の方針 |
1 |
WebOTX AS V9.4では、オプショナルコンポーネントとしてJAX-RS 2.0、JSF 2.2が利用できます。 デフォルトの環境ではJAX-RS 1.1 、JSF 2.1が有効になっています。 オプショナルコンポーネントを有効化するには、有効化するドメインを停止し、 管理ドメインにログインしてから以下のコマンドを実行する必要があります。
otxadmin> login --user <管理ドメインのユーザ> --password <管理ドメインのパスワード> --port <管理ドメインのポート> otxadmin> install-optional-component --domain <ドメイン名> --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> <コンポーネント名>
Memo
WebOTX ASのExpress、またはStandard/Enterpriseのスタンダードモードでは--apgroupオプションと--pgroupオプションは指定しません。
JAX-RS 2.0を有効化したい場合は「jaxrs20」を、 JSF 2.2を有効化したい場合は「jsf22」をコンポーネント名として指定してください。
オプショナルコンポーネントを有効化すると、 有効化の対象となるエージェントプロセスやプロセスグループに 適用されていたプロファイルをもとに 「optional-component-profile」というプロファイルが作成され、 新たに適用されます。 有効化対象に設定されているプロファイルによって、 有効化できるコンポーネントが違います。
JAX-RS 2.0は以下のプロファイルが適用されている場合にのみ有効化できます。otxadmin> login --user <管理ドメインのユーザ> --password <管理ドメインのパスワード> --port <管理ドメインのポート> otxadmin> uninstall-optional-component --domain <ドメイン名> --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> <コンポーネント名>
オプショナルコンポーネントが有効になっているかを確認する場合は、 以下のコマンドを実行します。
otxadmin> list-optional-components --domain <ドメイン名> --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> JAX-RS 2.0 : installed JSF 2.2 : installed コマンド list-optional-components は正常に実行されました。
otxadmin delete-domainコマンドで削除します。ここではsampleドメインを削除する手順を例に記載します。
otxadmin> login --user <管理ドメインのユーザ> --password <管理ドメインのパスワード> --port <管理ドメインのポート> otxadmin> stop-domain --remote sample
otxadmin> login --user <管理ドメインのユーザ> --password <管理ドメインのパスワード> --port <管理ドメインのポート> otxadmin> delete-domain sample
統合運用管理ツールでドメインを削除する場合、既に起動している管理ドメインに接続する必要があります。統合運用管理ツールの起動等の操作は[ 運用ツールガイド > 2.統合運用管理ツール(WebOTX Administrator) ] を確認してください。
図3.2.2-1
図3.2.2-2
図3.2.2-3
ドメインの状態を確認する方法について説明します。
ドメインの一覧を確認するにはotxadmin list-domainsコマンドを実行してください。そのマシン上で動作するドメインの一覧とそれぞれの状態が表示されます。
otxadmin> login --user admin --password adminadmin --port <管理ドメインの管理ポート> otxadmin> list-domains List of domains: domain1 running WebOTXAdmin running
各ドメイン名の表示につづけて以下のいずれかの状態が表示されます。
<ドメイン名> not running (停止中) <ドメイン名> starting (起動処理中) <ドメイン名> running (稼働中) <ドメイン名> stopping (停止処理中) <ドメイン名> unknown (状態不明)
ドメインの起動が完了し、サービスの要求を受け付けられる状態になっているか確認する方法について説明します。
以下のメッセージがドメインの起動・停止完了時にイベントログへ通知されます。
OTX01205135: アプリケーションサーバ[domain1:server] の起動に成功しました。 (com.nec.webotx.enterprise.system.core)
以下のメッセージがドメインの起動・停止完了時に各ドメインのログファイル(webotx_agent.log)に出力されます。
9999-99-99 00:00:00,000 SLOGINFO com.nec.webotx.enterprise.system.core - OTX01205135: アプリケーションサーバ [domain1:server] の起動に成功しました。 [main]
otxadminコマンドのgetコマンドを利用しWebOTXの各サービスの状態を確認します。
get コマンドの --exitstatusオプションを利用することでotxadminコマンドの終了コードに状態コードを反映させることができます。状態によってバッチ処理を行いたいような場合に利用することができます。
otxadmin get --exitstatus=true --exiterrornum=-1 server.internal-lifecycle-module.WebContainerService.state if %errorlevel%==1 echo WebContainer running!
状態コードは以下のように対応しています。
状態 | 状態表示(コード) |
---|---|
開始処理中(starting) | 0 |
実行中(running) | 1 |
停止処理中(stopping) | 2 |
停止中(stopped) | 3 |
起動・停止失敗(failed) | 4 |
(APG)クライアント接続中(client connecting) | 10 |
(PG)オペレーション実行中(process executing) | 11 |
(PG)リカバリ処理中(recovery executing) | 12 |
以下のサービスは状態表示をサポートしています。
サービス | dottedname |
---|---|
J2EEサーバ | server.internal-lifecycle-module.J2EEServer.state |
JMSプロバイダ | server.internal-lifecycle-module.JMSProvider.state |
ObjectBrokerサービス | server.internal-lifecycle-module.ObjectBrokerService.state |
トランザクションサービス | server.internal-lifecycle-module.TransactionService.state |
Webコンテナサービス | server.internal-lifecycle-module.WebContainerService.state |
Webサーバ(※WebOTX Webサーバ利用時のみ) | server.WebServer.state |
WebOTXのドメインを起動および停止する方法について説明します。
Windows Server 2008ではドメインの起動・停止は特権昇格したコマンドプロンプトから実行する必要があります。詳しくは [ 3.1. ドメインの運用操作の前に ] を参照してください。
WebOTXサービス起動時にドメインを自動起動させるかどうかの設定について説明します。なおデフォルトでは作成したドメインは自動起動します。
ドメインの自動起動を行わないよう設定するには管理ドメインに対して以下のコマンドを実行します。
※この操作は、対象となるドメイン(ここではdomain1)が停止している状態で行ってください。
# otxadmin otxadmin> login --user admin -password **** --port 6202 otxadmin> invoke domain.disable domain1 otxadmin> exit
再度、自動起動を有効にするには管理ドメインに対して以下のコマンドを実行します。
※この操作は、対象となるドメイン(ここではdomain1)が停止している状態で行ってください。
# otxadmin otxadmin> login --user admin -password **** --port 6202 otxadmin> invoke domain.enable domain1 otxadmin> exit
管理ドメインはWebOTXサービスと連動して起動、停止を行います。管理ドメインを起動/停止するにはWebOTXサービスを起動 /停止させてください。サービスを起動/停止する方法は [ 1. Windowsサービスとrcスクリプト > 1.2. サービスの起動・停止方法 ] を参照してください。
なおサービスを停止すると全てのドメインは停止されます。
特定のドメインを起動・停止させるには次のコマンドを実行してください。
# otxadmin> start-domain <domainname>
# otxadmin> stop-domain <domainname>
Windowsの場合の注意点
Windowsの場合、ローカルモードでドメインを起動を行うと、ログアウト時にドメインが停止します。 このため、開発時を除き、リモートモードでドメインの起動/停止を行ってください。
# otxadmin> login --user admin --password **** --host remotehost --port 6202 # otxadmin> start-domain --remote=true <domainname>
# otxadmin> login --user admin --password **** --host remotehost --port 6202 # otxadmin> stop-domain --remote=true <domainname>
管理ドメインの起動については [ 3.4.2. 管理ドメインの起動/停止 ] を参照してください。
WebOTXサービスを起動/停止すると、管理ドメインと一般ドメインの起動/停止が行われます。
起動では、最初に管理ドメインが起動され、管理ドメインの起動処理内で一般ドメインが起動されます。 一般ドメインが複数存在する場合は、指定された起動順序の値が小さい順に起動されます。
停止も起動と同様に、最初に管理ドメインが停止され、管理ドメインの停止処理内で一般ドメインが停止されます。 一般ドメインが複数存在する場合は、起動とは逆に起動順序の値が大きい順に停止されます。
起動順序は、ドメイン作成時に、他の一般ドメインと重複しない値のうち最も小さい値が自動的に割り当てられます。
起動順序を変更する場合は、set-start-orderコマンドを使用します。
otxadmin> login --user admin --password **** --host remotehost --port 6202 otxadmin> stop-domain --remote=true <domainname> otxadmin> set-start-order --domainname <domainname> <起動順序>
set-start-orderコマンドは、管理ドメインにログインして実行してください。 また、起動順序を変更する一般ドメインは停止する必要があります。
現在の起動順序の一覧を確認するには、list-start-ordersコマンドを実行します。
otxadmin> login --user admin --password **** --host remotehost --port 6202 otxadmin> list-start-orders
WebOTXサービス起動/停止時に複数の一般ドメインが存在する場合、一般ドメインは指定された起動順序で起動され、逆の順序で停止されます。
複数の一般ドメインを並列に起動/停止したい場合は、同じ起動順序を指定してください。 同じ起動順序が指定された一般ドメインは並列に起動/停止されます。 例えば、domain1とdomain2の起動順序を同じ「1」と設定することでdomain1とdomain2は並列に起動/停止されます。
起動順序の指定方法は、前節の[ 3.4.3.3. 一般ドメインの起動順序設定 ] を参照してください。
本節は Windows OS で運用している場合限定の内容であり、UNIX OS で運用している場合は対象外です。
start-domain、stop-domainコマンドによるドメイン運用はあくまで開発・評価時に対象となるドメインの起動・停止操作を速やかに行えることを第一の目的として提供しているコマンドです。
サービスからの運用方法との違いはプロセスを起動するユーザの違いに現れます。サービスから運用した場合、WebOTXの各種プロセスはシステムユーザとして起動されます。対して、運用管理コマンドから起動した場合は、運用ユーザのプロセスとして起動します。そのため、起動ユーザの環境設定に依存してしまい、運用時の思わぬトラブルの原因となってしまう場合があります。
そのため、本番環境での運用時にstart-domain、stop-domain コマンドによるドメイン制御は行わないようご注意ください(本番時はWebOTXサービスとして [ 1. Windowsサービスとrcスクリプト > 1.2. サービスの起動・停止方法 ] で記載した方法で各ドメインの起動・停止処理を行う運用となります)。
なお、 [ 3.4.3. 一般ドメインの起動/停止 ] のリモートモードでの起動/停止で説明している方法でユーザドメインを起動することで、管理ドメインと同一のユーザプロセスとして起動することが可能です。既に管理ドメインをサービスとして起動していて、システムユーザとしてユーザドメインを運用したい場合にご利用ください。
例えば、Windows 2008 serverではサービスから運用する方法、または、運用管理コマンドでドメイン運用サブコマンドに対しリモートオプション指定(※1)することにより、UACに起因する運用トラブルを未然に避けることができます。
図3.4.4-1
WebOTXでは運用ユーザの管理方法として、Fileレルム、LDAPレルム、JDBCレルムを用いる方法を提供しています。設定方法については、[ 4. ユーザ管理 > 4.3. ユーザ・グループの設定 ]を参照してください。
ドメイン上で動作している各サービスを起動、停止する方法について説明します。
サービスを起動・停止するotxadminコマンドは、以下の表の通りです。
サービス名 | 起動コマンド | 停止コマンド |
---|---|---|
JMSサービス | invoke server.jms-service.start または、 start-jms |
invoke server.jms-service.stop または、 stop-jms |
Object Brokerサービス | invoke server.objectbrokerservice.start | invoke server.objectbrokerservice.stop |
Transactionサービス | invoke server.transactionservice.start または、 start-transaction-service |
invoke server.transactionservice.stop または、 stop-transaction-service |
Webコンテナ | invoke server.internal-lifecycle-module.WebContainerService.start | invoke server.internal-lifecycle-module.WebContainerService.stop |
Webサーバ* | invoke server.WebServer.start | invoke server.WebServer.stop |
TPモニタ | start-system | stop-system |
*: WebOTX Webサーバインストール時のみ
ドメインの起動時にサービスを自動起動させるかどうかの設定方法について説明します。
現在の設定を確認するには次のコマンドを実行します。
otxadmin> get server.internal-lifecycle-module.<サービス名>.enabled
trueの場合は自動起動をする、falseの場合は自動を起動しない設定です。
<サービス名>は以下の表に従ってください。
サービス名 | 説明 |
---|---|
JMSProvider | JMSサービス |
ObjectBrokerService | Object Brokerサービス |
TransactionService | Transactionサービス |
WebContainerService | Webコンテナ |
WebServerService | HTTPサーバ(ApacheベースWebOTX Webサーバ) |
TPMonitorManagerService | TPモニタ・マネージャサービス |
otxadmin> get server.internal-lifecycle-module.ObjectBrokerService.enabled server.internal-lifecycle-module.ObjectBrokerService.enabled = true
自動起動の設定を変更するには次のコマンドを実行します。
otxadmin> set server.internal-lifecycle-module.<サービス名>.enabled={ true | false }
<サービス名>は上記表を参照してください。trueの場合は自動起動設定、falseの場合は自動起動しないに変更します。
otxadmin> set server.internal-lifecycle-module.ObjectBrokerService.enabled=false
WebOTXはセキュリティポリシーによりアクセス権が明示的に設定されています。
WebOTXの各サービスが動作するために必要なセキュリティポリシーはデフォルトで以下のファイルに記述されています。
${INSTANCE_ROOT}/config/server.policy
アプレット (またはセキュリティマネージャの下で動作しているアプリケーション) が、ファイルの読み書きなど、セキュリティ保護された操作を行うためには、その操作を行うためにアクセス権を付与する必要があります。必要に応じてserver.policyファイルに必要な権限を設定するようにしてください。
WebOTXでは、各サービスの基本的動作に必要な権限に加え、統合運用管理ツールなどリモートからの運用操作に必要なアクセス権限をデフォルトで定義しています。リモート接続時に必要な権限は、プリンシパル javax.management.remote.JMXPrincipal "otxadmin"によって定義されています。
セキュリティポリシー、ポリシーファイルの記述に関する詳細は、Java SDK の 「セキュリティ」 に関する情報を参照してください。
http://docs.oracle.com/javase/7/docs/technotes/guides/security/
ドメイン停止状態でポリシーファイルを編集することによって、ポリシーを追加することが可能です。
// Grant everyone the following permission: grant { permission java.io.FilePermission "/tmp/*", "read,write"; };
この例では、/tmpディレクトリのすべてのファイルに対する、読み込みと書き込み権を全てのJavaクラスに与えます。
WebOTX AS で既定としているJava VM オプションの変更方法とユーザ定義の独自のJava VM オプションの追加方法について説明します。
JDBCドライバや独自のライブラリをクラスパスに追加する方法について説明します。
WebOTX のクラスローダ構成の詳細は、[ 5. アプリケーション > 5.9. クラスローダ ] を参照してください。
運用管理コマンド(otxadmin)を利用することにより任意の場所にあるライブラリをクラスパスに追加できます。追加はWebOTXのシステムライブラリより下位のクラスローダに対して行われます。よってWebOTXのシステムライブラリが先に検索されます。
以下のコマンドを実行します。
確認otxadmin> get server.java-config.server-classpath設定
otxadmin> set server.java-config.server-classpath=<クラスパス>
例: クラスパスにD:\mylib.jarを追加
otxadmin> set server.java-config.server-classpath=D:\\mylib.jar
ライブラリを${INSTANCE_ROOT}/lib/extディレクトリに配置することにより自動的にそのライブラリをクラスパスに追加することができます。ここにjar, zipファイルをコピーするとWebOTXのシステムライブラリより上位のクラスローダによってロードされます。このため、例えばJava EEのAPIクラスなど、WebOTXのシステムライブラリに含まれるクラスを含むライブラリをここに配置すると、クラスロードの依存関係が変わり、ドメインが起動できなくなる可能性がありますので注意してください。
ライブラリを${INSTANCE_ROOT}/libディレクトリにコピーすることにより自動的にそのライブラリをクラスパスに追加することができます。ここにjar, zipファイルをコピーするとWebOTXのシステムライブラリより後で検索されます。
ライブラリを共有コンポーネントとして作成し、ドメインに配備することでCORBA JavaアプリケーションまたはEJBアプリケーションからそのライブラリを参照することができます。この場合配備したアプリケーションの設定で参照する共有コンポーネントを指定する必要があります。
ライブラリをOSGiバンドルとして作成し、ドメインに配備することでアプリケーションからそのOSGiバンドルがエクスポートしているパッケージのクラスを参照することができます。
CORBA JavaアプリケーションまたはEJBアプリケーションのプロセスグループの環境変数CLASSPATHを指定するとそのプロセスグループのクラスパスを指定することができます。
EJBコンテナはExpressとStandard/Enterpriseでは、実行されるJava VMのプロセスが異なります。Expressの場合は、同じエージェントプロセス上で動作しますが、Standard/Enterpriseの場合は、エージェントプロセスとは別のプロセスグループのJava VM上で動作します。
エディション別のコンテナがロードするライブラリと、検索の優先順位を以下に示します。優先度の高いもの順から記述しています。“○” はロードされることを示し、”×”はロードされないことを示します。
設定方法 | Express | Standard/ Enterprise (Standardモード) |
Standard/ Enterprise (Advancedモード) |
|
---|---|---|---|---|
Webコンテナ | EJBコンテナ | |||
${INSTANCE_ROOT}/lib/ext への配置 |
○ | ○ | ○ | ○ |
WebOTXシステムライブラリ | ○ | ○ | ○ | ○ |
OSGiバンドルとして配備 | ○ | ○ | ○ | ○ |
プロセスグループの環境変数CLASSPATHへの追加 | × | × | ○ | ○ |
${INSTANCE_ROOT}/lib | ○ | ○ | ○ | ○ |
server-classpath | ○ | ○ | ○ | ○ |
共有コンポーネントとして配備 | × | × | ○ | ○ |
Java VM のメモリサイズに関する設定項目として以下のものがあります。
オプション名 | オプションの役割 | 属性 |
---|---|---|
-Xms | 初期Javaヒープサイズ | server.java-config.heap-size |
-Xmx | 最大Javaヒープサイズ | server.java-config.max-heap-size |
-XX:PermSize | 初期Javaパーマネントサイズ | server.java-config.perm-size |
-XX:MaxPermSize | 最大Javaパーマネントサイズ | server.java-config.max-perm-size |
運用管理コマンド(otxadmin)を利用することによりJava VM のヒープサイズを設定することができます。
以下に、最大ヒープサイズの場合の実行方法を記載します。そのほかの値につきましては、「max-heap-size」の箇所を変更したい属性名に変更してください。
確認otxadmin> get server.java-config.max-heap-size設定
otxadmin> set server.java-config.max-heap-size=<最大ヒープサイズ>
例: 最大ヒープサイズを512mに設定
otxadmin> set server.java-config.max-heap-size=512m
JDK 8にはパーマネント領域が存在しないため、パーマネント領域の設定は無視されます。
GCログに関する設定項目として以下のものがあります。
オプション名 | オプションの役割 | 属性 |
---|---|---|
-verbose:gc | GCログ採取(標準出力) | server.java-config.verbose-gc-enabled |
-Xloggc | GCログ採取(指定ファイルへの出力) | server.java-config.heap-size |
設定方法は[Java VM のヒープサイズの設定方法]と同様です。
ネイティブライブラリパスに関する設定項目として以下のものがあります。
オプション名 | オプションの役割 | 属性 |
---|---|---|
-java.library.path | ネイティブライブラリパス | server.java-config.native-library-path-prefix |
server.java-config.native-library-path-suffix |
ネイティブライブラリパスであるjava.library.pathシステムプロパティへのパスの追加には [ Java VM のヒープサイズの設定方法 ] と同様の手順で行うことができます。
但し、ネイティブライブラリパスへの追加はパスの順序の違いにより以下の2通りがあります。
java.library.pathの先頭に追加
java.library.pathの末尾に追加
デバッグオプションに関する設定項目として以下のものがあります。
オプション名 | オプションの役割 | 属性 |
---|---|---|
-Xdebug | デバッグ有効オプション | server.java-config.debug-enabled |
-Xrunjdwp | jdwpロードオプション | server.java-config.debug-options |
設定方法は [ Java VM のヒープサイズの設定方法 ]と同様です。
プロセスグループへ既定のJava VMオプションを設定する場合、otxadminコマンド及び運用管理ツールを用いて設定することが可能です。
otxadminコマンドを使用する場合、設定可能な属性値は、以下のコマンドで確認することが可能です
otxadmin> get tpsystem.applicationGroups.<アプリケーショングループ名>.processGroups.<プロセスグループ名>.*
設定例は以下の通りです。
otxadmin> get tpsystem.applicationGroups.<アプリケーショングループ名>.processGroups.<プロセスグループ名>.maxHeapSize=1024
ドメイン起動のJava VMに独自のオプションを設定する方法について説明します。
運用管理コマンド(otxadmin)を利用することにより、任意の場所にあるライブラリをクラスパスに追加したり、Java VMの動作を調整するためのオプションを指定したりすることができます。なお運用管理コマンド「create-jvm-options」、「delete-jvm-options」については「運用管理コマンドリファレンスマニュアル」を参照してください。
以下のコマンドを実行します。
otxadmin> get server.java-config.jvm-options
otxadmin> create-jvm-options <オプション名>=<値>
otxadmin> delete-jvm-options <オプション名>
otxadmin> create-jvm-options -Dmy-debug-option=true
なお、「<オプション名>=<値>」の形式にならないオプションを設定、削除する場合は明示的にオプションの終了を示す':'(コロン)を最後に付け加えてください。
例) オプション -agentlib:hprof(プロファイル採取)を追加
otxadmin> create-jvm-options -agentlib:hprof:
オペランドの前に'--'を記述することでも実行可能です。
otxadmin> create-jvm-options -- -agentlib:hprof
プロセスグループへユーザ独自のJava VMオプションを追加する場合、add-pg-javasystem-property コマンド及び運用管理ツールを用いて設定することが可能です。
3.8.2. ユーザ独自のJava VMオプションの追加方法を参照し、独自のシステムプロパティを追加してください。
各プロセスグループに対して、3.8.2.1. プロセスグループへユーザ独自のJava VMオプションを追加する方法 を参照し、独自のシステムプロパティを追加してください。
また、エージェントプロセスに対して設定したシステムプロパティを、下記設定を行うことで全てのプロセスグループに反映することも可能です。
[アプリケーションサーバ] > [JVM構成] > [JVMオプション]タブを選択し、表示される[システムプロパティをプロセスグループに反映]にチェックを入れます。
図3.8.2-1
otxadmin> set server.java-config.use-processgroups=true
設定後、プロセスグループを再起動してください。
予めシステム側で設定しているオプションを参照したり、それらの値に変更を加える場合には、次のように指定してください。
otxadmin> get server.java-config.system-jvm-options
otxadmin> create-jvm-options --system <オプション名>=<値>
otxadmin> delete-jvm-options --system <オプション名>
otxadmin> delete-jvm-options --system -Djava.ext.dirs=<現在のプロパティ値>
otxadmin> create-jvm-options --system -Djava.ext.dirs=<新規のプロパティ値>
統計情報の採取および取得方法について説明します。なお詳細は [ ドメイン構築・基本設定ガイド > 9. モニタリング ] を参考にしてください。
まず統計方法の出力レベルを設定します。otxadminのsetコマンドを利用してレベルを設定します。なおモジュールにより設定できる出力レベルが異なります。
otxadmin> set server.monitoring-service.module-monitoring-levels.<モジュール名>=<レベル>
モジュール | 説明 | 設定できる値 | 既定値 |
---|---|---|---|
connector-connection-pool | コネクションプールに関する統計情報 | OFF, ON | OFF |
connector-service | コネクタサービスに関する統計情報 | OFF, ON | OFF |
ejb-container | EJBコンテナに関する統計情報 | OFF, LOW, HIGH | OFF |
http-service | WebコンテナのHTTPサービスに関する統計情報 | OFF, ON | OFF |
jdbc-datasource | JDBCデータソースに関する統計情報 | OFF, LOW, HIGH | OFF |
jms-service | JMSサービスに関する統計情報 | OFF, ON | OFF |
jvm | JavaVMに関する統計情報 | OFF, LOW, HIGH | OFF |
thread-pool | スレッドプールに関する統計情報 | OFF, ON | OFF |
transaction-service | トランザクションサービスに関する統計情報 | OFF, LOW, HIGH | OFF |
web-container | Webコンテナに関する統計情報 Webアプリケーションの統計情報を採取するには、運用管理コンソールの「統計情報」-「Web Applicationの統計情報」画面で統計情報の収集を開始(収集開始ボタンを押下)しておく必要があります。 |
OFF, ON | OFF |
otxadmin> set server.monitoring-service.module-monitoring-levels.jvm=HIGH
現在の統計情報の出力レベルを確認するにはotxadminのgetコマンドを利用します。
otxadmin> get server.monitoring-service.module-monitoring-levels.* server.monitoring-service.module-monitoring-levels.connector-connection-pool = OFF server.monitoring-service.module-monitoring-levels.connector-service = OFF server.monitoring-service.module-monitoring-levels.ejb-container = OFF server.monitoring-service.module-monitoring-levels.http-service = OFF server.monitoring-service.module-monitoring-levels.jdbc-datasource = OFF server.monitoring-service.module-monitoring-levels.jms-service = OFF server.monitoring-service.module-monitoring-levels.jvm = HIGH server.monitoring-service.module-monitoring-levels.thread-pool = OFF server.monitoring-service.module-monitoring-levels.transaction-service = OFF server.monitoring-service.module-monitoring-levels.web-container = OFF
統計情報の出力レベルをON,LOW,HIGHに設定すると、統計情報採取用のWebOTX統計MBeanが登録されますので、その属性をotxadminコマンドで取得することができます。
otxadmin> get --monitor=true server.jvm.* server.jvm.HeapFreeSize-Current = 34199456 server.jvm.HeapFreeSize-HighWaterMark = 34199456 server.jvm.HeapFreeSize-LowWaterMark = 0 server.jvm.HeapFreeSize-LowerBound = 0 server.jvm.HeapFreeSize-UpperBound = 518979584 server.jvm.HeapSize-Current = 73805824 server.jvm.HeapSize-HighWaterMark = 73805824 server.jvm.HeapSize-LowWaterMark = 0 server.jvm.HeapSize-LowerBound = 0 server.jvm.HeapSize-UpperBound = 518979584 server.jvm.HeapUsedRate-Current = 53 server.jvm.HeapUsedRate-HighWaterMark = 60 server.jvm.HeapUsedRate-LowWaterMark = 0 server.jvm.HeapUsedRate-LowerBound = 0 server.jvm.HeapUsedRate-UpperBound = 100 server.jvm.HeapUsedSize-Current = 39716224 server.jvm.HeapUsedSize-HighWaterMark = 39802144 server.jvm.HeapUsedSize-LowWaterMark = 0 server.jvm.HeapUsedSize-LowerBound = 0 server.jvm.HeapUsedSize-UpperBound = 518979584 server.jvm.UpTime-Count = 2507712
また、レベル設定後、otxadmin コマンド上でこれらの統計情報を定期的に取得するための [ monitor ] コマンドを用意しています。一定期間情報を取り続け、そのデータから分析を行う場合に有効です。
Transactionサービス(JTA)に関する統計情報の採取および取得方法について説明します。
次の手順で実施します。
図3.9.4.1-1
次のコマンドで取得します。ただし統合運用管理ツールの場合同様に、モニタリングレベルがOFFに設定されている場合失敗します。
otxadmin> get --monitor=true server.transaction-service.* server.transaction-service.ActiveCount-Count = 0 server.transaction-service.ActiveIds-Current = No Transactions exists. server.transaction-service.ApplicationRolledbackCount-Count = 1 server.transaction-service.AverageTAT-Count = 26975 server.transaction-service.Committed2PCCount-Count = 2 server.transaction-service.CommittedCount-Count = 5 server.transaction-service.CompletedCount-Count = 7 server.transaction-service.DeletedCount-Count = 0 server.transaction-service.ForgottenCount-Count = 0 server.transaction-service.HeuristicCount-Count = 0 server.transaction-service.ResourceRolledbackCount-Count = 1 server.transaction-service.RolledbackCount-Count = 2 server.transaction-service.SystemRolledbackCount-Count = 0 server.transaction-service.TimedOutCount-Count = 0 server.transaction-service.TransferedCount-Count = 1
モニタリングレベルをLOW、あるいはHIGHに設定した場合には、統合運用管理ツール、およびotxadminコマンドを使用して実行中のトランザクション情報も取得することができます。また表示したトランザクションに対する操作も可能です。
なお、モニタリングレベルがOFFの場合はotxadminコマンドでは表示されません。
次にotxadminコマンドを使用したトランザクション一覧の取得、および操作について説明します。
otxadminコマンドを使用する場合、属性名を次のように指定します。
otxadmin> get --monitor=true server.transaction-service.ActiveIds-Current
これにより実行中トランザクションの一覧が確認できます。実行中のものが存在しない場合、
server.transaction-service.ActiveIds-Current = No Transaction Exists.
と表示されます。存在する場合は
server.transaction-service.ActiveIds-Current = Transaction ID Status A/R Start Time ----------------+--------------------+-------+------------------- 0277689751350000 StatusCommitting Active 2008/6/8 14:39:53 0384489751290000 StatusCommitting Active 2008/6/8 14:39:54 0255289751170000 StatusPrepared Active 2008/6/8 14:39:57 0277689749150001 StatusUnknown Recover 2008/6/8 14:40:49 0384489749070001 StatusUnknown Active 2008/6/8 14:40:51
のように表示されます。統合運用管理ツールでは前述の方法で実施すると右側ペインに上記のように表示されます。
次にそれぞれの項目について説明します。詳細については [ リファレンス集 運用管理・設定編 > 1. コンフィグレーション(設定一覧) ] をご参照ください。
項目 | 説明 |
---|---|
TransactionID | トランザクション識別子です。これを利用してトランザクションの操作を実施します。 |
Status | トランザクションの状態です。 |
A/R | RCSにトランザクションが移管されているかどうかを表します。 「Active」の場合は移管されておらず、「Recover」の場合は移管されていることを示します。 |
Start Time | トランザクションが開始された日時です。 |
トランザクションの操作は次のように実施します。
図3.9.4.3-1
otxadmin> login
otxadmin> commit-transaction 0277689751350000
otxadmin> rollback-transaction 0277689751350000
otxadmin> forget-transaction 0277689751350000
otxadmin> delete-transaction 0277689751350000
トランザクションの操作については、Transactionサービス(統合運用管理ツールの「<ドメイン名>」-「アプリケーションサーバ」-「Transactionサービス」ツリー)からも実施可能です。詳細については [ 7. WebOTXの内部サービス > 7.4. Transactionサービス ] をご参照ください。
コード変換について説明します。
CORBA通信でのコード変換について説明します。
C++アプリケーションとJavaアプリケーション間のCORBA通信で、日本語データを送受信する場合には、文字化けが発生しないように、適切なコードセットの設定を行う必要があります。C++アプリケーションとJavaアプリケーション間ではそのコードセットの設定情報を交換して、どのようにコード変換を行うかを決定しています。個々の文字列の内容をチェックしている訳ではありません。そのため、実際にC++アプリケーションがどのような文字列を送受信するかによって、正しいNativeコードセットの設定を行っておく必要があります。例えば、C++アプリケーションでSJISの文字列をデータベースやファイルから読み込んで送受信するのであれば、NativeコードセットもSJISに設定する必要があります。
詳細については、次を参照してください。
Object Broker C++では、 [ リファレンス集 運用管理・設定編 > 1. コンフィグレーション(設定一覧) > 1.10. Object Broker > 1.10.3. Object Broker C++における環境設定 ] の[ コードセットに関するオプション設定 ]を参照してください。
Object Broker Javaでは、 [ アプリケーション開発ガイド(CORBA) > 1. CORBA アプリケーション > 1.2. プログラミング・開発ガイド > 1.2.2. Object Broker > 1.2.2.7. Object Broker Javaの機能 ] の[ 文字コードセット ]を参照してください。
Webアプリケーションでは、リクエストやレスポンスの文字エンコーディングをさまざまなところで指定することができます。以下に、場所に応じた文字エンコーディングの指定方法を説明します。
Webブラウザから POSTメソッドで送付されるリクエストパラメータは、javax.servlet.ServletRequest.getParameter() を使って取得しますが、このパラメータを取得する際の文字エンコーディングは次のメソッドで指定します。
javax.servlet.ServletRequest.setCharacterEncoding()
このメソッドは、getParameter() の前に呼び出す必要があります。
Servlet からクライアントに出力するレスポンスの文字エンコーディングは次のメソッドで指定します。
javax.servlet.ServletResponse.setContentType()
引数として、"text/html; charset=Shift_JIS" のように指定します。このメソッドは、PrintWriterを取得する前に呼び出す必要があります。
Servlet の場合と同様です。
JSP からクライアントに出力するレスポンスの文字エンコーディングは次のように pageディレクティブで指定します。
<%@ page contentType="text/html; charset=Shift_JIS" %>
また、JSPファイル自体がどの文字エンコーディングで保存されているかを指定する要素として次のものがあります。
<%@ page pageEncoding="Shift_JIS" %>
もし、上記の指定をしていない場合、デフォルトの "ISO-8859-1" となりますが、このデフォルト値を変更する事も可能です。
変更するには、次のように otxadmin コマンドを使って default-encoding プロパティで指定します。ドメインを起動したあと、次のようにコマンドを実行してください。
otxadmin> set server.web-container.property.default-encoding=Shift_JIS
また、JSP を事前コンパイルする場合のデフォルト文字エンコーディングは nec-web.xml で次のように指定します。
<jsp-config> <property name="precompileDefaultEncoding" value="Shift_JIS"/> </jsp-config>
なお、デフォルト文字エンコーディングの指定は JSP をコンパイルする時に決定します。事前コンパイルした場合は nec-web.xml の指定が、そうでない場合は default-encoding プロパティ指定が有効になります。事前コンパイルでない場合、指定を変更するには Webアプリケーションを再配備し、JSP を再コンパイルする必要があります。
ドメイン内で起動するJavaプロセス(JVM)を監視・管理する方法について説明します。
方法は幾つかあり、それぞれ対象となるJavaプロセスやその表示形式が異なりますので、目的に応じて使い分けて下さい。
WebOTXが提供する各種運用管理ツールを使用してJavaプロセスの監視・管理を行います。
この方法では、次のJavaプロセスが監視・管理の対象となります。
ドメインに接続後、「<ドメイン名>」-「統計情報」-「domain」-「アプリケーションサーバ」-「JVM」を選択すると、画面右側に監視情報が表示されます。
図3.11.1-1
ドメインにログイン後、JVMの統計情報に対するコマンド表記名(server.jvm)を使用して、次のコマンドを実行します。
otxadmin> get --monitor=true server.jvm.*
デフォルトの状態では、ヒープの消費状況や実行時間についての情報を参照することができます。
より詳細な情報を参照するためには、JVMに対するモニタリングレベルを変更します。モニタリングレベルに応じて、次のような情報を参照することができます。
監視対象 | 説明 | モニタリングレベル | 統合運用管理ツール 「<ドメイン名>」-「統計情報」-「domain」-「アプリケーションサーバ」-「JVM」を基準 |
運用管理コマンド コマンド表記名(CLIName) "get --monitor=true <CLIName>.*"を実行 |
---|---|---|---|---|
クラスローディングシステム | JVM内で使用されるクラスのロードに関する情報を監視します。 | LOW,HIGH | 「JVM」配下 | server.jvm.class-loading-system |
コンパイルシステム | JVM内で実行されるコンパイル処理に関する情報を監視します。 | LOW,HIGH | 「JVM」配下 | server.jvm.compilation-system |
ガベージコレクタ | JVM内で実行されるGC処理に関する情報を監視します。 | LOW,HIGH | 「JVM」-「メモリシステム」-「<ガベージコレクタ名>」配下 | server.jvm.garbage-collectors.<ガベージコレクタ名> |
メモリシステム | JVM内でのメモリの消費状況や、メモリプールに関する情報を監視します。 | 概要:LOW,HIGH プール単位:HIGH |
概要:「JVM」配下 プール単位:「JVM」-「メモリシステム」-「<メモリプール名>」 |
概要:server.jvm.memory スレッド単位:server.jvm.memory.<メモリプール名> |
オペレーティングシステム | JVMが動作するOSに関する情報を監視します。 | LOW,HIGH | 「JVM」配下 | server.jvm.operating-system |
実行時システム | JVMの実行に関する情報を監視します。 | LOW,HIGH | 「JVM」配下 | server.jvm.runtime |
スレッドシステム | JVM内で生成されるスレッドに関する情報を監視します。 | 概要:LOW,HIGH スレッド単位:HIGH |
概要:「JVM」配下 スレッド単位:「JVM」-「スレッドシステム」-「<スレッド名>」 |
概要:server.jvm.thread-system スレッド単位:server.jvm.thread-system.<スレッド名> |
なお、各監視対象で参照可能な監視項目の詳細については、 [ 9. モニタリング ] を参照してください。
「<ドメイン名>」-「アプリケーションサーバ」-「モニタリングサービス」-「モジュールモニタリングレベル」を選択し、画面右側に表示される設定項目「JVM」の値を LOW もしくは HIGH に変更し、「更新」ボタンを押します。
図3.11.1-2
次のコマンドを実行します。
otxadmin> set server.monitoring-service.module-monitoring-levels.jvm=LOW
otxadmin> set server.monitoring-service.module-monitoring-levels.jvm=HIGH
※監視を終了する場合は、モニタリングレベルを OFF に戻して設定を更新してください。
また、統合運用管理ツールでは、定期的な情報採取によりこれまでに取り上げた監視項目をグラフ化表示したり、監視項目が一定条件を満たした際にその旨を通知画面に出力したりすることができます。一方で、運用管理コマンドではJVMヒープ情報に関して、定期的な情報採取により監視項目をプロンプト画面に出力することができます。詳しくは、 [ 運用ツールガイド > 2. 統合運用管理ツール(WebOTX Administrator) > 2.5. 統計情報 ] を参照してください。
JDKに付属のJMX(Java Management Extensions)仕様に準拠した監視ツールjconsoleを利用して、Javaプロセスの監視・管理を行います。
この方法では、次のJavaプロセスが監視・管理の対象となります。
また、jconsoleに関する詳しい説明はOracleの公式サイトを参考にして下さい。
http://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html
但し、jconsoleをWebOTXと同じマシン(ローカル)で動作させるか、異なるマシン(リモート)で動作させるかによってパラメータ指定画面が異なります。以下に接続例を示します。
※プロセスグループの各プロセスに接続する場合は、後述のリモート接続による作業を行って下さい。
図3.11.2-2 jconsole画面
「ローカルプロセス」をクリックし、接続候補リストの中から「名前」列に“com.nec.webotx.enterprise.bootstrap.ASMain -domainname domain1”(JMXエージェントへの接続) が表示されている行を選択し、「接続」ボタンを押します。
※上記以外のJavaプロセスを監視する場合には、 [ 1. WebOTXの構成 > 1.2. 動作プロセス ] で記載されている引数情報を参考に対象のプロセスを選択してください。
図3.11.2-4 jconsole画面
「リモートプロセス」をクリックし、入力フィールドに<ホスト名>:<ポート>の形式で入力します。「ユーザ名」と「パスワード」には、ドメインに対して設定されている運用ユーザ名とパスワードを入力します。
パラメータ指定後、「接続」ボタンを押します。
接続に成功すると、以下のような画面が表示されます。
図3.11.2-6 jconsole画面
初期表示画面では「概要」タブが選択されており、監視対象のJVMに関するパフォーマンス情報とリソース消費情報、およびOSに関するリソース情報が表示されます。
この他の画面では、カテゴリ毎に情報が細分化され、それらの監視項目がグラフィカルに表示されます。以下に、各表示項目について簡潔に説明します。
図3.11.2-7
(※)WebOTXでは、高機能化の実現にあたり、独自にJMX仕様を拡張させたMBeanを使用しています。そのため、そのMBeanを示すツリーノードは画面左側に表示されますが、ノードをクリックした場合、jconsoleでは対応しきれず以下のエラーメッセージが表示されます。
図3.11.2-8
これらのMBeanは通常システム内部でのみ使用するため、ユーザが参照する必要はありません。これらのMBeanは、システム内部および「統合運用管理ツール」や「運用管理コマンド」などから参照されます。
運用管理コマンドを使用して、Javaプロセスに対する様々な監視項目をレポート形式で出力します。
この方法では、次のJavaプロセスが監視・管理の対象となります。
対象のドメインにログイン後、以下の指定方法によりコマンドを入力することで、ドメイン内のJavaプロセスに対する監視項目を画面に表示することができます。
otxadmin> generate-jvm-report --type <監視項目のタイプ名> <サーバ名>
<監視項目のタイプ名>には、summary、memory、class、thread のいずれかを指定します。<サーバ名>には、情報取得の対象とするサーバ(Javaプロセス)の名前を指定します。サーバ名は次のようになります。
監視項目の取得対象がJava用TPPプロセスである場合、次の指定方法によっても同じ結果を得ることができます。
otxadmin> generate-jvm-report --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> --type <監視項目のタイプ名> <プロセスID>
<プロセスID>には、Java用TPPプロセスに割り当てられているプロセスIDを指定します。プロセスIDの確認方法については [ [参考1]Java用TPPプロセスに対するプロセスIDの確認方法 ] をご覧ください
さらに、Java用TPPプロセスに対するコマンド指定方法の詳細に関しては [ [参考2]Java用TPPプロセスに対する監視項目を取得する場合のコマンド指定方法 ] をご覧ください。
なお、--type オプションが省略された場合は、<監視項目のタイプ名>に "summary" がデフォルトとして指定されます。また、<サーバ名>が省略された場合は、"server" がデフォルトとして指定されます。
otxadmin> generate-jvm-report --type summary <サーバ名>
otxadmin> generate-jvm-report --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> --type summary <プロセスID>
otxadmin> generate-jvm-report --type summary server オペレーティングシステムの情報: 名前: Windows Server 2008 アーキテクチャ: amd64, バージョン: 6.0 使用可能なプロセッサの数: 2 : Java Runtime Environment (JRE) の一般的な情報: 4364@HOSTNAME [ブートクラスパス] C:\WebOTX/modules/endorsed\javax.annotation.jar C:\WebOTX/modules/endorsed\wows-api.jar C:\Program Files\Java\jdk1.7.0_21\jre\lib\resources.jar C:\Program Files\Java\jdk1.7.0_21\jre\lib\rt.jar : [クラスパス] C:/WebOTX/modules/webotx.jar : [ネイティブライブラリパス] C:/WebOTX/lib C:/Program Files/Java/jdk1.7.0_21/bin C:/Windows/Sun/Java/bin C:/Windows/System32 C:/Windows : JRE 名: Java HotSpot(TM) 64-Bit Server VM ベンダー: Oracle Corporation バージョン: 23.21-b01 システムプロパティのリスト: ANTLR_USE_DIRECT_CLASS_LOADING = true AS_ACC_CONFIG = %ACC_CONFIG% AS_ANT = C:\WebOTX\lib\ant :
コマンドを実行したタイミングでの、JVMが動作するOS情報を始め、設定されているクラスパス(ブートクラスパス、システムクラスパス)やネイティブライブラリパスおよび、システムプロパティなどが一覧形式で表示されます。
otxadmin> generate-jvm-report --type memory <サーバ名>
otxadmin> generate-jvm-report --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> --type memory <プロセスID>
otxadmin> generate-jvm-report --type memory server [メモリ情報] ヒープメモリ使用状況: 108,121 K / 172,504 K 全体(確定), 62 % 使用済み [ 65,536 K 初期, 506,816 K 最大] 非ヒープメモリ使用状況: 40,581 K / 71,136 K 全体(確定), 57 % 使用済み [ 65,696 K 初期, 229,376 K 最大] ファイナライズを待機しているオブジェクトの数(概算): 0 [メモリプール情報] Java 仮想マシンの実行時間: 0 時間 4 分 57 秒 Eden Space 36,920 K / 47,616 K 全体(確定), 77 % 使用済み [ 17,472 K 初期, 139,776 K 最大] Code Cache 5,568 K / 5,600 K 全体(確定), 99 % 使用済み [ 160 K 初期, 32,768 K 最大] Perm Gen 35,013 K / 65,536 K 全体(確定), 53 % 使用済み [ 65,536 K 初期, 196,608 K 最大] Survivor Space 0 K / 5,952 K 全体(確定), 0 % 使用済み [ 2,176 K 初期, 17,472 K 最大] Tenured Gen 71,359 K / 118,936 K 全体(確定), 59 % 使用済み [ 43,712 K 初期, 349,568 K 最大] Eden Space +------------------------------------------------------------+ |/////////////// | | 77 % used +------------------------------------------------------------+ |------| init (17,472 K) |--------------| used (36,920 K) |-------------------| committed (47,616 K) |------------------------------------------------------------| max (139,776 K) Code Cache +------------------------------------------------------------+ |/////////| | 99 % used +------------------------------------------------------------+ || init (160 K) |---------| used (5,568 K) |---------| committed (5,600 K) |------------------------------------------------------------| max (32,768 K) : [ガベージコレクション情報] ガベージコレクタの名前: Copy このガベージコレクタを使用してコレクションが発生した回数: 44 回 ガベージコレクションの時間: 0 秒 485 ミリ秒 ガベージコレクタの名前: MarkSweepCompact このガベージコレクタを使用してコレクションが発生した回数: 3 回 ガベージコレクションの時間: 0 秒 363 ミリ秒 :
コマンドを実行したタイミングでの、ヒープ、非ヒープ領域のメモリ使用状況を始め、各メモリプール毎に細分化したメモリ情報のスナップショット、およびそれらの視覚的な表示、ならびにGC動作情報などが一覧形式で表示されます。
JVMベンダや指定されたJVMオプションによって多少メモリプール情報の内容が異なりますが、大抵の場合、次のような内容となります。
また、それぞれの値に示された項目は次のような内容となります。
otxadmin> generate-jvm-report --type class <サーバ名>
otxadmin> generate-jvm-report --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> --type class <プロセスID>
otxadmin> generate-jvm-report --type class server **** Class Statistics for Java Virtual Machine [Application Server Instance Name: server] **** Class loading and unloading in the Java Virtual Machine: Number of classes currently loaded in the Java Virtual Machine: 8,135 Number of classes loaded in the Java Virtual Machine since the startup: 8,667 :
コマンドを実行したタイミングでの、ロードおよびアンロードされたクラスのカウント情報などが一覧形式で表示されます。
otxadmin> generate-jvm-report --type thread <サーバ名>
otxadmin> generate-jvm-report --apgroup <アプリケーショングループ名> --pgroup <プロセスグループ名> --type thread <プロセスID>
otxadmin> generate-jvm-report --type thread server **** Thread Dump for Java Virtual Machine [Application Server Instance Name: server] **** Full Java Thread Dump Java HotSpot(TM) Server VM 1.5.0_15-b04 Sun Microsystems Inc. Number of threads: 98 Number of daemon threads: 79 Thread "Thread-739" thread-id 2,309 thread-state RUNNABLE Running in native at: java.net.SocketInputStream.socketRead0(Native Method) at: java.net.SocketInputStream.read(SocketInputStream.java:129) at: jp.co.nec.orb.GIOP.Message.readPartOfMessage(Message.java:944) at: jp.co.nec.orb.GIOP.Message.readOneMessage(Message.java:894) at: jp.co.nec.orb.GIOP.Message.dispatchReceiveMessage(Message.java:823) at: jp.co.nec.orb.ClientReader.run(ClientReader.java:648) at: java.lang.Thread.run(Thread.java:595) Thread "RMI TCP Connection(1360)-HOSTNAME" thread-id 2,308 thread-state RUNNABLE Running in native at: java.net.SocketInputStream.socketRead0(Native Method) at: java.net.SocketInputStream.read(SocketInputStream.java:129) at: java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at: java.io.BufferedInputStream.read(BufferedInputStream.java:235) at: java.io.FilterInputStream.read(FilterInputStream.java:66) at: sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:448) at: sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707) at: java.lang.Thread.run(Thread.java:595) Thread "RMI TCP Connection(1359)-HOSTNAME" thread-id 2,307 thread-state RUNNABLE Running in native at: java.net.SocketInputStream.socketRead0(Native Method) at: java.net.SocketInputStream.read(SocketInputStream.java:129) at: java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at: java.io.BufferedInputStream.read(BufferedInputStream.java:235) at: java.io.FilterInputStream.read(FilterInputStream.java:66) at: sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:448) at: sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707) at: java.lang.Thread.run(Thread.java:595) : No deadlock found
コマンドを実行したタイミングでの、JVM内の全スレッドの動作情報、およびスレッド毎のスタックトレース情報(=スレッドダンプ)などが一覧形式で表示されます。また、JVM内のスレッド間でデッドロックが発生している場合には、その旨を示す内容が続けて表示されます。
プロンプトの設定状況によっては記述の途中で改行されて読み辛くなる場合や、最初の方の出力結果が表示されなくなる場合があります。一方で、出力結果をファイルに保存したい場合があります。その際は、コマンドの実行結果を任意のファイルにリダイレクトする等の方法が有効です。
otxadmin generate-jvm-report --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <ポート番号> --type thread server > <出力先ファイルパス>
なお、いずれの取得情報においても、Java用TPPプロセスを対象とした場合、アプリケーショングループ、プロセスグループ、プロセスIDの情報が追加でタイトル行に表示されます。複数のプロセスを情報取得の対象とした場合、この表示を参考にプロセス単位で読み分けてください。
例) アプリケーショングループ名 : apg、プロセスグループ名 : pg、プロセスID : 12345、取得対象 : summary の場合
**** Java Virtual Machine [Application Server Instance Name: apg-pg] Summary **** (Application Group : apg, Process Group : pg, Process ID : 12345) :
Java用TPPプロセスのプロセスIDについては、以下のコマンドを実行することで確認できます。
otxadmin> list --monitor tpsystem.applicationGroups.<アプリケーショングループ名>.processGroups.<プロセスグループ名>.processes.*
例) アプリケーショングループ名 : apg、プロセスグループ名 : pg の場合
otxadmin> list --monitor tpsystem.applicationGroups.apg.processGroups.pg.processes.* tpsystem.applicationGroups.apg.processGroups.pg.processes.14348.jvm tpsystem.applicationGroups.apg.processGroups.pg.processes.21380.jvm :
この時、表示される識別名の後部に示されている数値(14348、21380、...)が、実行中のJava用TPPプロセスのIDです。
Java用TPPプロセスの監視項目を取得する場合のコマンド指定方法について、幾つかの例を示します。
例) アプリケーショングループ名 : apg、プロセスグループ名 : pg、プロセスID : 12345、取得対象 : summary の場合
otxadmin> generate-jvm-report --type summary apg-pg
otxadmin> generate-jvm-report --type summary apg-pg-12345
otxadmin> generate-jvm-report --apgroup apg --pgroup pg --type summary
otxadmin> generate-jvm-report --apgroup apg --pgroup pg --type summary 12345
コマンドの詳細については、[ generate-jvm-report ]をご覧ください。
JavaプロセスにおけるGC処理の様子をファイルへ出力します。
この方法では、次のJavaプロセスが監視・管理の対象となります。
ドメインに接続後、「<ドメイン名>」-「アプリケーションサーバ」-「JVM構成」を選択し、画面右側に表示される「GC」タブ内の設定項目-「GC情報の出力」にチェックを入れます。この状態では、標準出力用のログファイルであるserver.log(${INSTANCE_ROOT}/logs配下)に出力されますので、任意のファイルにGCログ情報を出力するためには、さらに同タブ内の項目「GC情報の出力先」にて、ファイル出力先のフルパスを指定して下さい(ファイル名のみ指定した場合は、${INSTANCE_ROOT}/config配下に出力されます)。
設定後、「更新」ボタンを押します。設定は、ドメインの再起動後に反映されます。
図3.11.4-1
ドメインにログイン後、次のコマンドを実行します。
otxadmin> set server.java-config.verbose-gc-enabled=true
任意のファイルにGCログ情報を出力するためには、さらに次のコマンドを実行します。
ここでは、出力先のファイルパスを D:\WebOTX\domains\domain1\logs\gc.log とします。
otxadmin> set server.java-config.gc-logfile="D:\WebOTX\domains\domain1\logs\gc.log"
※GCログの採取を終了する場合は、設定を元の状態に戻します(運用管理コマンドの場合はtrueで設定した値をfalseに更新します)。
なお、ドメイン再起動の度に過去のGCログファイルは上書きされますので、ログを残す場合にはドメイン起動の前にファイルを別の場所に退避するか、リネームするなどの処置を行ってください。
3.886: [GC 16446K->3056K(62848K), 0.0165272 secs] 9.617: [GC 19504K->4723K(62848K), 0.0174459 secs] 16.169: [GC 21171K->7358K(62848K), 0.0296354 secs] 17.911: [GC 11882K->7984K(62848K), 0.0125603 secs] 17.924: [Full GC 7984K->7787K(62848K), 0.1311320 secs] :
上記出力例の場合、1行目のログは、JVMが起動してから3.886秒後に、GCによってJavaヒープ領域内のオブジェクトの合計サイズが16,446K(≒16M)バイトから3,056K(≒3M)バイトに減少したことを示します。すなわち、このGCにより13,390K(≒13M)バイトの領域が解放されたことになります。また、カッコ内の数値は、現在のJavaヒープ全体のサイズが62,848K(≒62M)バイトであることを示します。最後の数値は、このGCに要した時間で、0.0165272(≒17ミリ)秒となります。
なお、ログ中の "GC" は、Scavenge GC、"Full GC" は、フルGC が発生したことを示します。
図3.11.4-2
より詳細なGC情報を参照するためには、JVMオプションを追加します。オプションに応じて、次のような情報を参照することができます。
オプション | 説明 |
---|---|
-XX:+PrintGCDetails | GCに関する詳細情報を表示します。 |
-XX:+PrintGCTimeStamps | GCの詳細情報にタイムスタンプを追加します。 |
-XX:+PrintHeapAtGC | GC前後のヒープの使用状況を表示します。 |
-XX:+PrintTenuringDistribution | オブジェクトの生存回数や殿堂入りに関する情報を表示します。 |
「<ドメイン名>」-「アプリケーションサーバ」-「JVM構成」を選択し、画面右側に表示される「JVMオプション」タブ内の設定項目-「JVMオプション」に上述のオプションを追加し、「更新」ボタンを押します。
次のコマンドを実行します(上述のオプションを全て指定する場合)。
otxadmin> create-jvm-options -- "-XX\:+PrintGCTimeStamps"
otxadmin> create-jvm-options -- "-XX\:+PrintGCDetails"
otxadmin> create-jvm-options -- "-XX\:+PrintHeapAtGC"
otxadmin> create-jvm-options -- "-XX\:+PrintTenuringDistribution"
GCログの採取を終了する場合は、オプションを削除します(運用管理コマンドの場合は delete-jvm-options コマンドにて各オプションを指定し削除)。
3.970: [GC {Heap before gc invocations=0: def new generation total 19648K, used 17472K [0x10010000, 0x11560000, 0x1aab0000) eden space 17472K, 100% used [0x10010000, 0x11120000, 0x11120000) from space 2176K, 0% used [0x11120000, 0x11120000, 0x11340000) to space 2176K, 0% used [0x11340000, 0x11340000, 0x11560000) tenured generation total 43712K, used 0K [0x1aab0000, 0x1d560000, 0x30010000) the space 43712K, 0% used [0x1aab0000, 0x1aab0000, 0x1aab0200, 0x1d560000) compacting perm gen total 65536K, used 7519K [0x30010000, 0x34010000, 0x38010000) the space 65536K, 11% used [0x30010000, 0x30767e60, 0x30768000, 0x34010000) No shared spaces configured. 3.971: [DefNew Desired survivor size 1114112 bytes, new threshold 1 (max 15) - age 1: 2228224 bytes, 2228224 total : 17472K->2176K(19648K), 0.0265893 secs] 17472K->3213K(63360K)Heap after gc invocations=1: def new generation total 19648K, used 2176K [0x10010000, 0x11560000, 0x1aab0000) eden space 17472K, 0% used [0x10010000, 0x10010000, 0x11120000) from space 2176K, 100% used [0x11340000, 0x11560000, 0x11560000) to space 2176K, 0% used [0x11120000, 0x11120000, 0x11340000) tenured generation total 43712K, used 1037K [0x1aab0000, 0x1d560000, 0x30010000) the space 43712K, 2% used [0x1aab0000, 0x1abb3790, 0x1abb3800, 0x1d560000) compacting perm gen total 65536K, used 7519K [0x30010000, 0x34010000, 0x38010000) the space 65536K, 11% used [0x30010000, 0x30767e60, 0x30768000, 0x34010000) No shared spaces configured. } , 0.0268294 secs] :
この場合のログは、ヒープ内のメモリ領域ごとに非常に詳細なGC情報が出力されますが、JVMのベンダによってその出力形式が異なるため、解析の際には各ベンダが提供する専用のツールなどをご利用ください。
クライアントからドメインに接続を行う際に使用するプロトコルはデフォルトではJRMPとなっています。WebOTXではJRMP以外にも下位互換用のプロトコルとしてJMXMPを提供しています。また、SSLを利用した接続もサポートしています。
下位互換用のプロトコルJMXMPを利用する手順について説明します。
JMXMPを有効にするために、以下のコマンドを実行し、ドメインを再起動してください。
otxadmin> set server.admin-service.jmx-connector.system-option.enabled=true
JMXMPを利用してドメインに接続するにはコマンドに--protocolオプションでjmxmpを指定してください。loginコマンドの実行例を以下に示します。
otxadmin> login --user admin --password adminadmin --port 6712 --protocol jmxmp --secure=true
SSLを利用してクライアントからドメインに接続する手順について説明します。
SSLを有効にするために、以下のコマンドを実行し、ドメインを再起動してください。
otxadmin> set server.admin-service.jmx-connector.system.security-enabled=true
SSLを利用してドメインに接続するにはコマンドに--secureオプションでtrueを指定してください。loginコマンドの実行例を以下に示します。
otxadmin> login --user admin --password adminadmin --port 6212 --secure=true
障害によりドメインが停止した場合に自動的に再起動する機能について説明します。
再起動復旧機能は、障害により突如ドメインが停止した場合に、対象ドメインの残存プロセスの終了と再起動を自動で行う機能です。自動復旧はユーザドメインの監視を行っている管理ドメインが行います。そのため、本機能を有効にするためには、運用中に管理ドメインが起動している必要があります。
本機能が復旧対象とする監視項目はユーザドメインのエージェントプロセスに対するもので、主に以下の3つが該当します。
上記に該当する障害が発生した場合、管理ドメインはユーザプロセスの停止を行います。停止処理は2段階に分かれており、まずは通常の停止処理を試みます。この停止処理にはタイムアウト時間を設定可能です。通常の停止処理が完了しなかった場合、強制停止処理が行われます。強制停止処理ではOS層での残存プロセスの強制停止を行います。
停止処理が完了すると、ユーザドメインの起動処理に移ります。この起動処理にはタイムアウト時間を設定可能です。なお、復旧処理にはリトライ回数を設定することができ、起動処理に失敗した場合やタイムアウト時間を経過しても起動しない場合には、再び停止処理および起動処理を試みることができます。
本機能は既定では無効化されています。そのため、本機能を利用するためには、以下の設定を行ってください。
設定方法については、次節を参照してください。
また、各設定項目(リトライ回数、startTimeout値、stopTimeout値)の内容は以下の通りです。
図3.13.1-1
(注1) [ リファレンス集 運用管理・設定編 > 4. 運用管理コマンドリファレンス > 4.2. 運用管理コマンド(otxadmin) > 4.2.1. 使用方法 > 4.2.1.17. コマンドのタイムアウト設定 ]で記載されている otxadmin.propertiesの設定を行っている場合、本機能のタイムアウト値より優先してotxadm.propertiesの設定が反映されます。復旧設定のタイムアウト値を有効にしたい場合は、otxadmin.propertiesの設定を${INSTANCE}/config/から退避するなどして、無効化してください。
なお、必要以上にリトライを行うと以下の問題が発生する可能性があります。
リトライ回数を変更する場合は上記の問題が発生しない範囲で設定を行ってください。また、構築中の環境の場合、本機能により予期しない再起動処理が行われないようご注意ください。
また、Windows OS の場合、[ ドメイン構築・基本設定ガイド > 3. ドメイン > 3.4. ドメインの起動・停止 > 3.4.4. サービスでの運用とコマンドでの運用の違い ] の説明にあるように、起動方法によってドメインプロセスの起動ユーザが異なります。
本機能により、管理ドメインからユーザドメインを起動した場合、ユーザドメインは管理ドメインの起動ユーザと同じユーザのプロセスとして起動します。意図して管理ドメインとユーザドメインを別々のユーザプロセスとして起動している場合にはご注意ください。
(注2) 本機能の有効中にユーザドメインを起動・停止する際は、再起動することを防ぐため、管理ドメインを起動し以下のコマンドにて管理ドメイン経由で行ってください。ここではユーザドメインがdomain1の場合を例として説明します。
ユーザドメインの起動
otxadmin> start-domain --user <管理ドメインのユーザ名> --password <管理ドメインのパスワード> --port <管理ドメインの管理ポート> --remote=true domain1
ユーザドメインの停止
otxadmin> stop-domain --user <管理ドメインのユーザ名> --password <管理ドメインのパスワード> --port <管理ドメインの管理ポート> --remote=true domain1
対象ドメインの再起動復旧機能の有効化
otxadmin> invoke --port <管理ドメインの管理ポート> domain.setRecoveryEnabled domain1 true
リトライ回数の設定
otxadmin> invoke --port <管理ドメインの管理ポート> domain.setRetryCount domain1 <リトライカウント数>
起動タイムアウト[秒]の設定
otxadmin> invoke --port <管理ドメインの管理ポート> domain.setStartTimeout domain1 <タイムアウト秒>
停止タイムアウト[秒]の設定
otxadmin> invoke --port <管理ドメインの管理ポート> domain.setStopTimeout domain1 <タイムアウト秒>
図3.13.2-1
対象ドメインを選択し、「実行」を押してください。
図3.13.2-2
対象ドメインの再起動復旧機能の無効化
otxadmin> invoke --port <管理ドメインの管理ポート> domain.setRecoveryEnabled domain1 false
図3.13.3-1
対象ドメインを選択し、「実行」を押してください。
図3.13.3-2
対象ドメインの再起動復旧機能の確認
otxadmin> invoke --port <管理ドメインの管理ポート> domain.getRecoveryEnabled domain1
リトライ回数の確認
otxadmin> invoke --port <管理ドメインの管理ポート> domain.getRetryCount domain1
起動タイムアウト[秒]の確認
otxadmin> invoke --port <管理ドメインの管理ポート> domain.getStartTimeout domain1
停止タイムアウト[秒]の確認
otxadmin> invoke --port <管理ドメインの管理ポート> domain.getStopTimeout domain1
図3.13.4-1
対象ドメインを選択し、「実行」を押してください。
図3.13.4-2
スクリプトマネージャ起動は、以下のタイミングでユーザが任意に記載したスクリプトを実行するための機能です。
ドメインが起動処理中(starting)の処理に入った際に、登録されたスクリプトを実行します。実行タイミングは業務アプリケーションが利用可能となる前になります。
ドメインが停止処理中(stopping)の処理に入った際に、登録されたスクリプトを実行します。実行タイミングは業務アプリケーションの停止処理が完了した後になります。
本機能を利用することで、アプリケーションがネットワークドライブを利用する場合、そのネットワークドライブの接続/接続解除を行う等、ユーザ独自の処理を実行することができます。
例えば業務アプリケーションが稼働しているサーバと、業務アプリケーションが利用するリソースや出力するログが別のサーバである場合、この機能が有用です。
図3.14.1-1
この場合、ユーザドメインAに対し、起動時に実行するスクリプトとして、ネットワーク接続スクリプトを、停止時に実行するスクリプトとしてネットワーク接続解除スクリプトを登録します。
これにより、ユーザドメインA起動時にネットワーク接続が行われ、ユーザドメインA停止時に接続が解除されます。
図3.14.1-2
複数のドメイン上で動作する業務アプリケーションが、別のサーバのリソースを利用する場合は、管理ドメインに対してスクリプトを登録する必要があります。
図3.14.1-3
管理ドメインに登録した場合、下記の図のように管理ドメインの起動/停止タイミングでスクリプトが実行され、ユーザドメインの起動/停止タイミングでは実行されません。
図3.14.1-4
${INSTANCE_ROOT}/config配下に任意の名前のスクリプト(bat/sh)を配置した後、以下のコマンドを実行します。
otxadmin> login --user <ユーザ名> --password <ユーザパスワード> --port <ポート番号> otxadmin> set domain.start-script=<スクリプトファイル名>
${INSTANCE_ROOT}/config配下に任意の名前のスクリプト(bat/sh)を配置した後、以下のコマンドを実行します。
otxadmin> login --user <ユーザ名> --password <ユーザパスワード> --port <ポート番号> otxadmin> set domain.stop-script=<スクリプトファイル名>
登録した起動は、次回のドメイン起動時から実行されます。
図3.14.1-5
登録したスクリプトに何等かの問題があり、スクリプトの実行に失敗するような場合、原因究明が困難になる可能性があります。このため、スクリプト内で処理を実行する際に標準出力や標準エラーを任意のファイルに出力しておくことを推奨します。
「JMXコネクタ」および「内蔵Webサーバ」のSSL通信時に使用するキーストア/トラストストアの設定について説明します。
「内蔵Webサーバ」のSSL通信の詳細については以下を参照してください。
[ リファレンス集 運用管理・設定編 > 1. コンフィグレーション(設定一覧) > 1.15. 共通SSL設定 > 1.15.1. Webコンテナ内蔵のWebサーバを使う場合 ]
キーストア/トラストストアの配置場所とパスワードの変更方法について説明します。
設定の反映にはドメインの再起動が必要です。
otxadmin> login --user <ユーザ名> --password <ユーザパスワード> --port <ポート番号> otxadmin> set server.security-service.keystore=<キーストアのパス>
各設定を変更する際の具体的なコマンドは以下の通りです。
otxadmin> set server.security-service.keystore=<キーストアのパス>
otxadmin> set server.security-service.keystore-password=<キーストアのパスワード>
otxadmin> set server.security-service.truststore=<トラストストアのパス>
otxadmin> set server.security-service.truststore-password=<トラストストアのパスワード>
図3.15.1-1