Java EEアプリケーションの運用環境に関する以下のトラブルについて対処方法を説明します。
サーバーインスタンス起動時の異常
サーバーインスタンスの起動に失敗した場合は、以下のログにエラーメッセージが出力されていないかを確認し、「メッセージ集」の「Java EEのメッセージラベルのあるメッセージ」または「10.32 メッセージ番号に「PCMI」を含むメッセージ」を参照して起動失敗の原因を調査してください。
イベントログ(Windows)/システムログ(Solaris/Linux)
サーバーログ
Java VMログ
PCMIサービストレースログ
また、以下の対処を行ってください。
サーバーインスタンスの起動処理遅延またはハングアップによりサーバーインスタンス起動待ち時間を超過した場合は、Java VMログにJava VMプロセスのフルスレッドダンプが出力されます。フルスレッドダンプを参照し、起動処理遅延やハングアップの原因となるアプリケーションがないかを確認してください。
通信ポートを獲得できないために起動に失敗している場合は、「付録D ポート番号」、「システム設計ガイド」の「ポート番号」を参照して、ポート番号をチューニングしてください。
Java VMログにJava VMの異常を示すメッセージが出力されている場合は、「トラブルシューティング集」の「Java実行環境運用時の異常」を参照し、起動に失敗した原因を調査してください。
上記の調査を行っても原因を特定できない場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
サーバーインスタンスの異常終了
サーバーインスタンスプロセスが異常終了した場合は、以下のログにエラーメッセージが出力されていないか確認し、「第10章 Java EE 6のメッセージ」を参照して異常終了の原因を調査してください。
イベントログ(Windows)/システムログ(Solaris/Linux)
サーバーログ
Java VMログ
PCMIサービストレースログ
Java VMログおよびサーバーログには、JDK/JREの異常メッセージが出力される場合があります。「チューニングガイド」の「JDK/JREのチューニング」も参照して、調査してください。
上記の調査を行っても原因を特定できない場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
ポイント
PCMIプロファイルの「プロセスの自動再起動」に「自動再起動する」を設定している場合は、運用中にサーバーインスタンスのプロセスが異常終了しても、PCMIサービスの自動再起動機能によりプロセスの自動再起動が行われるため、業務を継続できます。詳細については、「2.5.1 Java VMプロセスの生死監視」を参照してください。
大文字・小文字の区別なしで同名のサーバーインスタンスを作成した場合
大文字・小文字の区別なしで同名のサーバーインスタンスを作成した場合、どちらか一方のサーバーインスタンスしか正規の方法で削除できません。この場合、以下の手順で削除を行ってください。
以下のディレクトリが存在しない場合、サーバーインスタンスの作成を行ってください。
[Java EE 6共通ディレクトリ]\nodes\localhost-domain1\agent
削除したいサーバーインスタンスの名前のディレクトリを以下のように作成してください。
[Java EE 6共通ディレクトリ]\nodes\localhost-domain1\[削除したいサーバーインスタンスの名前]
asadmin delete-local-instanceサブコマンドを使用して削除したいサーバーインスタンスを削除してください。この時以下のメッセージが出力されますが、無視してください。
The instance directory does not exist: [削除したいサーバーインスタンスのパス]
手順1でサーバーインスタンスを作成した場合、そのサーバーインスタンスを削除してください。
大文字・小文字の区別なしで同名のアプリケーションを配備した場合
大文字・小文字の区別なしで同名のアプリケーションを配備した場合、既存のおよび配備したアプリケーションの両方を配備解除してください。なお、このとき、どちらか一方のアプリケーションが配備解除後に、再配備することができません。既存のおよび配備した大文字・小文字の区別なしで同名のアプリケーションを配備解除した後、展開先のIJServerクラスタおよびInterstage Java EE 6 DASサービスを再起動させてください。
Interstage Java EE 6 DASサービス起動時の異常
Interstage Java EE 6 DASサービスの起動に失敗した場合は、標準出力と以下のログにエラーメッセージが出力されていないか確認し、「メッセージ集」を参照して起動失敗の原因を調査してください。
Interstage Java EE 6 DASサービスのサーバーログ
サーバーログにメモリ不足を示すエラーメッセージが出力されている場合は、「6.13 Interstage Java EE 6 DASサービスのヒープ領域サイズ」を参照して対処を行ってください。
サーバーログにエラーメッセージが出力されておらず、かつコマンドラインのみ出力される場合、以下のディレクトリを削除後、Interstage Java EE 6 DASサービスを起動してください。
[Java EE 6共通ディレクトリ]\domains\domain1\osgi-cache\felix |
[Java EE 6共通ディレクトリ]/domains/domain1/osgi-cache/felix |
ログファイルについての詳細は、「4.17 Java EEアプリケーションのログ」を参照してください。
起動時の異常によって、不正にプロセスが残存する場合があります。「Interstage Java EE 6 DASサービスのプロセス回収手順」を参照して、残存しているプロセスを回収してください。
JVMオプションのチューニングによって、製品の動作に必要なオプションを削除している場合があります。「7.7.14 Java VMの定義項目」を参照して、デフォルトのJVMオプションを削除していないか確認してください。
通信ポートの獲得失敗による起動失敗
通信ポートを獲得できないために起動に失敗している場合は、「ポート番号の重複によってInterstage Java EE 6 DASサービスが起動できない場合」、または「付録D ポート番号」を参照してポート番号をチューニングしてください。
なお、他のサービス・プロセスとのポート番号重複によりInterstage Java EE 6 DASサービスの起動に失敗している場合、重複したポート番号を利用しているサービス、プロセスを一旦停止した上で、Interstage Java EE 6 DASサービスを起動して設定変更を行ってください。
HTTPリスナーの設定値異常による起動失敗や操作不能
HTTPリスナーに対する設定を誤った場合、Interstage Java EE 6 DASサービスやIJServerクラスタの起動に失敗する場合があります。
IJServerクラスタの場合は、IJServerクラスタが停止、Interstage Java EE 6 DASサービスが起動している状態でasadminコマンドを実行し、正しい値を設定してください。その後IJServerクラスタを起動することにより復旧することができます。
Interstage Java EE 6 DASサービスの場合、HTTPリスナーの設定に異常があると起動ができない、asadminコマンドによる操作を受け付けないという状態になります。
この場合、Interstage Java EE 6 DASサービスが停止している状態でdomain.xmlを修正します。
注意
domain.xmlを編集する際は、下記に示す箇所以外の設定を変更しないでください。変更するとInterstage Java EE 6 DASサービスを使用できなくなる場合があります。また、編集前にdomain.xmlを退避することをおすすめします。
以下のファイルをテキストエディタなどで開いて編集します。
[Java EE 6共通ディレクトリ]\domains\domain1\config\domain.xml |
[Java EE 6共通ディレクトリ]/domains/domain1/config/domain.xml |
name属性に「server-config」が設定されているconfigタグ配下について、以下の観点を確認します。不正な値が指定されている場合は編集します。
port属性が存在するかどうか、また指定されているポート番号の値が正しいかどうか
port属性は必ず指定されている必要があります。
address属性がある場合、マシンのIPアドレスとなっているか
address属性が存在しない場合、省略値「0.0.0.0」が指定されているものとして動作します。
enabled属性がある場合、運用管理用HTTPリスナー(admin-listener)に対してfalseが設定されていないか
falseの場合、asadminコマンドによる操作を受け付けることができないため、trueを設定します。
transport属性、protocol属性、thread-pool属性が存在しているか
存在しない場合、以下の例のように指定する必要があります。
例
正常なdomain.xmlの例
<domain log-root="${com.sun.aas.instanceRoot}/logs" ・・・> ・・・ <configs> <config name="server-config"> ・・・ <network-config > ・・・ <network-listeners> <network-listener port="28282" protocol="http-listener-1" transport="tcp" name="http-listener-1" thread-pool="http-thread-pool"></network-listener>
<network-listener port="28383" protocol="http-listener-2" transport="tcp" name="http-listener-2" thread-pool="http-thread-pool"></network-listener>
<network-listener port="12011" protocol="admin-listener" transport="tcp" name="admin-listener" thread-pool="admin-thread-pool"></network-listener>
</network-listeners> ・・・ </network-config > </config> </configs> </domain>
インストール直後のdomain.xmlの状態は、以下のようになっています。
ポート番号 | ネットワークアドレス | HTTPリスナーの有効化 | |
---|---|---|---|
運用管理用HTTPリスナー | 12011 | 指定なし (省略値0.0.0.0) | 指定なし (省略値true) |
HTTPリスナー | 28282 | 指定なし (省略値0.0.0.0) | 指定なし (省略値true) |
HTTPSリスナー | 28383 | 指定なし (省略値0.0.0.0) | 指定なし (省略値true) |
Interstage Java EE 6 DASサービス停止時の異常
Interstage Java EE 6 DASサービスの停止に失敗した場合は、標準出力と以下のログにエラーメッセージが出力されていないか確認し、「メッセージ集」を参照して起動失敗の原因を調査してください。
Interstage Java EE 6 DASサービスのサーバーログ
また、停止時の異常によって、不正にプロセスが残存する場合があります。「Interstage Java EE 6 DASサービスのプロセス回収手順」を参照して、残存しているプロセスを回収してください。
Interstage Java EE 6 DASサービスの異常終了
Interstage Java EE 6 DASサービスが異常終了した場合は、システムログ/イベントログにエラーメッセージが通知されます。iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
なお、Interstage Java EE 6 DASサービスが異常終了すると、asadminコマンドによる定義変更やサーバーインスタンスの操作を行うことができません。本現象が発生した場合は、Interstage Java EE 6 DASサービスを再起動してください。
ポイント
PCMIプロファイルの「プロセスの自動再起動」に「自動再起動する」を設定している場合は、運用中にInterstage Java EE 6 DASサービスのプロセスが異常終了しても、PCMIサービスの自動再起動機能によりプロセスの自動再起動が行われるため、業務を継続できます。詳細については、「2.5.1 Java VMプロセスの生死監視」を参照してください。
Interstage Java EE 6 DASサービスの動作が定義項目の値と異なる場合
getサブコマンドで取得される値とInterstage Java EE 6 DASサービスの動作が異なる場合、再起動の必要な定義項目の値を変更している場合があります。Interstage Java EE 6 DASサービスを再起動してください。再起動しても定義項目の値が反映されない場合、資料採取を行った上で技術員に連絡してください。
Interstage Java EE 6 DASサービスが操作を受け付けない場合
「Interstage Java EE 6 DASサービスのフルスレッドダンプ採取手順」を実施して、ユーザアプリケーションがハングしていないかどうか確認してください。ユーザアプリケーションがハングしていない場合、「Interstage Java EE 6 DASサービスのプロセス回収手順」を参照して、残存しているプロセスを回収してください。資料採取を行った上で技術員に連絡してください。
また、運用管理HTTPリスナーのポート番号を変更した場合、通常の運用操作は受け付けません。「運用管理用HTTPリスナーのポート番号を変更する場合」を参照してください。
Interstage Java EE 6 DASサービスのフルスレッドダンプ採取手順
以下の手順により、Interstage Java EE 6 DASサービスのフルスレッドダンプを採取してください。
以下のファイルを参照して、Interstage Java EE 6 DASサービスのプロセスIDを確認してください。
[Java EE 6共通ディレクトリ]\domains\domain1\config\pid |
[Java EE 6共通ディレクトリ]/domains/domain1/config/pid |
注意
ファイルが存在していない場合、またはjavaプロセスが存在しない場合、プロセスは存在していません。
1で確認したIDのプロセスがjavaプロセスとして存在しているか、以下の方法で確認してください。
Windowsのタスクマネージャで確認してください。
psコマンドを使用して確認してください。
1で確認したプロセスIDに対して、以下の方法でフルスレッドダンプを取得してください。
thdumpコマンドを使用してフルスレッドダンプを取得してください。thdumpコマンドの詳細は、「トラブルシューティング集」の「スレッドダンプツール」を参照してください。
jstackコマンドを実行してください。jstackコマンドの詳細は、「トラブルシューティング集」の「JDKに含まれるトラブルシューティングに役立つツール」を参照してください。
Interstage Java EE 6 DASサービスのプロセス回収手順
以下の手順により、Interstage Java EE 6 DASサービスのプロセスを回収してください。
以下のファイルを参照して、Interstage Java EE 6 DASサービスのプロセスIDを確認してください。
[Java EE 6共通ディレクトリ]\domains\domain1\config\pid |
[Java EE 6共通ディレクトリ]/domains/domain1/config/pid |
注意
ファイルが存在していない場合、またはjavaプロセスが存在しない場合、プロセスは存在していません。
1で確認したIDのプロセスがjavaプロセスとして存在しているか、以下の方法で確認してください。
Windowsのタスクマネージャで確認してください。
psコマンドを使用して確認してください。
1で確認したプロセスIDに対して、以下の方法でプロセスを回収してください。
Windowsのタスクマネージャでプロセスを終了させてください。
killコマンドを使用してプロセスを削除してください。
Interstage Java EE 6 DASサービスでのアプリケーション運用時の異常
Interstage Java EE 6 DASサービスでアプリケーションを運用する際の異常については、「11.3.3 アプリケーションの運用に関する異常」を参照してください。
PCMIサービスの異常終了
PCMIサービスが異常終了した場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
なお、PCMIサービスが異常終了すると、以下の機能は動作しません。ただし、運用中のアプリケーションの動作には影響ありません。
Interstage Java EE 6 DASサービスの起動/停止
IJServer クラスタの起動/停止
サーバーインスタンスの起動/停止
プロセスの生死監視
プロセスの生存通知監視
プロセスの停止時間監視
アプリケーション最大処理時間の監視
Java VMログ採取
PCMIサービス停止時のスクリプトの実行
Javaヒープ/Permanent世代領域不足時の制御
注)PCMIサービスが異常終了すると、PCMIプロファイルの「Javaヒープ/Permanent世代領域不足時の制御」の設定状態により以下のように動作します。
「restart」の場合
プロセスを再起動できないため、プロセスダウンとなります。
「oome」の場合
アプリケーションに「java.lang.OutOfMemoryError」が返却されます。動作には影響ありません。
正常な状態に復旧するには、以下の手順でリカバリを行ってください。
運用中のサーバーインスタンスを確認します。
asadminコマンドのlist-instancesサブコマンドで起動状態のサーバーインスタンスを確認してから、以下のファイルを参照し、起動状態のサーバーインスタンスのプロセスIDを確認してください。
[Java EE 6共通ディレクトリ]\nodes\localhost-domain1\<サーバーインスタンス名>\config\pid
[Java EE 6共通ディレクトリ]/nodes/localhost-domain1/<サーバーインスタンス名>/config/pid
注意
ファイルが存在していない場合、プロセスは存在していません。
1で確認したIDのプロセスがjavaプロセスとして存在しているか、以下の方法で確認してください。
Windowsのタスクマネージャで確認してください。
psコマンドを使用して確認してください。
注意
プロセスIDに対応するjavaプロセスが存在しない場合、プロセスは存在していません。
1で確認したプロセスIDに対して、以下の方法でプロセスを回収してください。
Windowsのタスクマネージャでプロセスを終了させてください。
killコマンドを使用してプロセスを削除してください。
Interstage Java EE 6 DASサービスのプロセス回収手順で、Interstage Java EE 6 DASサービスのプロセスを回収してください。
以下の手順でPCMIサービスを起動します。
Interstage PCMI(isje6)サービスを停止して、起動します。
PCMIサービスを起動します。
Interstage Java EE 6 DASサービスを再起動します。
IJServerクラスタを再起動します。
注意
リカバリを行わずにPCMIサービスを起動した場合、リカバリを行っていないサーバーインスタンスに対して正しい操作を行うことができません。リカバリを行って、正常な状態に復旧してください。
リカバリ対象は、PCMIサービスより前に起動しているサーバーインスタンスです。リカバリを行わずにPCMIサービスを起動した状態で、リカバリ対象のサーバーインスタンスを見分ける場合は、PCMIサービスの起動時刻とサーバーインスタンスの起動時刻を比較して判別してください。
なお、PCMIサービスの起動時刻はイベントログ/システムログに出力されたメッセージ「PCMI1000」の時刻、サーバーインスタンスの起動時刻はイベントログ/システムログに出力されたメッセージ「PCMI1002」の時刻でそれぞれ確認してください。