Java EEアプリケーションの運用環境に関する以下のトラブルについて対処方法を説明します。
サービスなどの起動が失敗し、ログに「アドレスは既に使用中です」または「Address already in use」が含まれている場合
ポート番号が重複している可能性があります。ポート番号は、システム上のアプリケーションを含む、すべてのサービスにおいてそれぞれ異なるポート番号を設定する必要があります。
ポート番号を確認し重複していた場合は、一意となるようにポート番号を変更してください。
ポート番号の詳細については「付録D ポート番号」を参照してください。
サーバーインスタンス起動時の異常
サーバーインスタンスの起動に失敗した場合は、以下のログにエラーメッセージが出力されていないかを確認し、「第11章 Java EE 7のメッセージ」を参照して起動失敗の原因を調査してください。
イベントログ(Windows)/システムログ(Solaris/Linux)
サーバーログ
Java VMログ
PCMIサービストレースログ
Javaヒープ領域またはメタスペース不足のメッセージが表示される場合、「12.18 OutOfMemoryErrorがログに出力された場合」を参照し、それぞれの領域サイズを増やしてください。
また、以下の対処を行ってください。
サーバーインスタンスの起動処理遅延またはハングアップによりサーバーインスタンス起動待ち時間を超過した場合は、Java VMログにJava VMプロセスのフルスレッドダンプが出力されます。フルスレッドダンプを参照し、起動処理遅延やハングアップの原因となるアプリケーションがないかを確認してください。
通信ポートを獲得できないために起動に失敗している場合は、「付録D ポート番号」、「システム設計ガイド」の「ポート番号」を参照して、ポート番号をチューニングしてください。
Java VMログにJava VMの異常を示すメッセージが出力されている場合は、「トラブルシューティング集」の「Java実行環境運用時の異常」を参照し、起動に失敗した原因を調査してください。
上記の調査を行っても原因を特定できない場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
サーバーインスタンスの異常終了
サーバーインスタンスプロセスが異常終了した場合は、以下のログにエラーメッセージが出力されていないか確認し、「第11章 Java EE 7のメッセージ」を参照して異常終了の原因を調査してください。
イベントログ(Windows)/システムログ(Solaris/Linux)
サーバーログ
Java VMログ
PCMIサービストレースログ
Java VMログおよびサーバーログには、JDK/JREの異常メッセージが出力される場合があります。「チューニングガイド」の「JDK/JRE 8のチューニング」も参照して、調査してください。
上記の調査を行っても原因を特定できない場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
ポイント
PCMIプロファイルの「プロセスの自動再起動」に「自動再起動する」を設定している場合は、運用中にサーバーインスタンスのプロセスが異常終了しても、PCMIサービスの自動再起動機能によりプロセスの自動再起動が行われるため、業務を継続できます。詳細については、「2.5.1 Java VMプロセスの生死監視」を参照してください。
サーバーインスタンスのレスポンスが悪化する場合
サーバーログのログレベルが高い(FINE/FINER/FINEST)場合、ログ出力に時間がかかり、処理の遅延またはプロセス起動待ち時間の超過によるサーバーインスタンスの起動失敗などが発生する可能性があります。
適正なログレベルに設定されていることを確認してください。なお、ログレベルの確認方法や設定方法については、「10.1.19 ログ」を参照してください。
Interstage Java EE 7 DASサービス起動時の異常
Interstage Java EE 7 DASサービスの起動に失敗した場合は、標準出力と以下のログにエラーメッセージが出力されていないか確認し、「第11章 Java EE 7のメッセージ」を参照して起動失敗の原因を調査してください。
Interstage Java EE 7 DASサービスのサーバーログ
サーバーログにメモリ不足を示すエラーメッセージが出力されている場合は、「6.17 Interstage Java EE 7 DASサービスのヒープ領域サイズ」を参照して対処を行ってください。
サーバーログにエラーメッセージが出力されておらず、かつコマンドラインのみ出力される場合、以下のディレクトリを削除後、Interstage Java EE 7 DASサービスを起動してください。
[Java EE 7共通ディレクトリ]\domains\domain1\osgi-cache\felix |
[Java EE 7共通ディレクトリ]/domains/domain1/osgi-cache/felix |
ログファイルについての詳細は、「4.17 Java EEアプリケーションのログ」を参照してください。
起動時の異常によって、不正にプロセスが残存する場合があります。「Interstage Java EE 7 DASサービスのプロセス回収手順」を参照して、残存しているプロセスを回収してください。
JVMオプションのチューニングによって、製品の動作に必要なオプションを削除している場合があります。「8.8.15 Java VMの定義項目」を参照して、デフォルトのJVMオプションを削除していないか確認してください。
通信ポートの獲得失敗による起動失敗
通信ポートを獲得できないために起動に失敗している場合は、「ポート番号の重複によってInterstage Java EE 7 DASサービスが起動できない場合」、または「付録D ポート番号」を参照してポート番号をチューニングしてください。
なお、他のサービス・プロセスとのポート番号重複によりInterstage Java EE 7 DASサービスの起動に失敗している場合、重複したポート番号を利用しているサービス、プロセスを一旦停止した上で、Interstage Java EE 7 DASサービスを起動して設定変更を行ってください。
HTTPリスナーの設定値異常による起動失敗や操作不能
HTTPリスナーに対する設定を誤った場合、Interstage Java EE 7 DASサービスやIJServerクラスタの起動に失敗する場合があります。
IJServerクラスタの場合は、IJServerクラスタが停止、Interstage Java EE 7 DASサービスが起動している状態でasadminコマンドを実行し、正しい値を設定してください。その後IJServerクラスタを起動することにより復旧することができます。
Interstage Java EE 7 DASサービスの場合、HTTPリスナーの設定に異常があると起動ができない、asadminコマンドによる操作を受け付けないという状態になります。
この場合、Interstage Java EE 7 DASサービスが停止している状態でdomain.xmlを修正します。
注意
domain.xmlを編集する際は、下記に示す箇所以外の設定を変更しないでください。変更するとInterstage Java EE 7 DASサービスを使用できなくなる場合があります。また、編集前にdomain.xmlを退避することをおすすめします。
以下のファイルをテキストエディタなどで開いて編集します。
[Java EE 7共通ディレクトリ]\domains\domain1\config\domain.xml |
[Java EE 7共通ディレクトリ]/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="28484" protocol="http-listener-1" transport="tcp" name="http-listener-1" thread-pool="http-thread-pool"></network-listener>
<network-listener port="28585" protocol="http-listener-2" transport="tcp" name="http-listener-2" thread-pool="http-thread-pool"></network-listener>
<network-listener port="12021" 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リスナー | 12021 | 指定なし (初期値0.0.0.0) | 指定なし (初期値true) |
HTTPリスナー | 28484 | 指定なし (初期値0.0.0.0) | 指定なし (初期値true) |
HTTPSリスナー | 28585 | 指定なし (初期値0.0.0.0) | 指定なし (初期値true) |
Interstage Java EE 7 DASサービス停止時の異常
Interstage Java EE 7 DASサービスの停止に失敗した場合は、標準出力と以下のログにエラーメッセージが出力されていないか確認し、「第11章 Java EE 7のメッセージ」を参照して停止失敗の原因を調査してください。
Interstage Java EE 7 DASサービスのサーバーログ
また、停止時の異常によって、不正にプロセスが残存する場合があります。「Interstage Java EE 7 DASサービスのプロセス回収手順」を参照して、残存しているプロセスを回収してください。
Interstage Java EE 7 DASサービスの異常終了
Interstage Java EE 7 DASサービスが異常終了した場合は、システムログ/イベントログにエラーメッセージが通知されます。
予兆監視警告メッセージ「OM3204」が出る場合には、「12.18 OutOfMemoryErrorがログに出力された場合」を参照し、Javaヒープ領域・メタスペース領域を増やしてください。
その他の場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
なお、Interstage Java EE 7 DASサービスが異常終了すると、asadminコマンドによる定義変更やサーバーインスタンスの操作を行うことができません。本現象が発生した場合は、Interstage Java EE 7 DASサービスを再起動してください。
ポイント
PCMIプロファイルの「プロセスの自動再起動」に「自動再起動する」を設定している場合は、運用中にInterstage Java EE 7 DASサービスのプロセスが異常終了しても、PCMIサービスの自動再起動機能によりプロセスの自動再起動が行われるため、業務を継続できます。詳細については、「2.5.1 Java VMプロセスの生死監視」を参照してください。
Interstage Java EE 7 DASサービスの動作が定義項目の値と異なる場合
getサブコマンドで取得される値とInterstage Java EE 7 DASサービスの動作が異なる場合、Interstage Java EE 7 DASサービスを再起動してください。再起動しても定義項目の値が反映されない場合、資料採取を行った上で技術員に連絡してください。
Interstage Java EE 7 DASサービスが操作を受け付けない場合
「Interstage Java EE 7 DASサービスのフルスレッドダンプ採取手順」を実施して、ユーザアプリケーションがハングしていないかどうか確認してください。ユーザアプリケーションがハングしていない場合、「Interstage Java EE 7 DASサービスのプロセス回収手順」を参照して、残存しているプロセスを回収してください。資料採取を行った上で技術員に連絡してください。
また、運用管理HTTPリスナーのポート番号を変更した場合、通常の運用操作は受け付けません。「運用管理用HTTPリスナーのポート番号を変更する場合」を参照してください。
Interstage Java EE 7 DASサービスのフルスレッドダンプ採取手順
以下の手順により、Interstage Java EE 7 DASサービスのフルスレッドダンプを採取してください。
以下のファイルを参照して、Interstage Java EE 7 DASサービスのプロセスIDを確認してください。
[Java EE 7共通ディレクトリ]\domains\domain1\config\pid |
[Java EE 7共通ディレクトリ]/domains/domain1/config/pid |
注意
ファイルが存在していない場合、またはjavaプロセスが存在しない場合、プロセスは存在していません。
1で確認したIDのプロセスがjavaプロセスとして存在しているか、以下の方法で確認してください。
Windowsのタスクマネージャで確認してください。
psコマンドを使用して確認してください。
1で確認したプロセスIDに対して、以下の方法でフルスレッドダンプを取得してください。
thdumpコマンドを使用してフルスレッドダンプを取得してください。thdumpコマンドの詳細は、「トラブルシューティング集」の「スレッドダンプツール」を参照してください。
jstackコマンドを実行してください。jstackコマンドの詳細は、「トラブルシューティング集」の「JDKに含まれるトラブルシューティングに役立つツール」を参照してください。
Interstage Java EE 7 DASサービスのプロセス回収手順
以下の手順により、Interstage Java EE 7 DASサービスのプロセスを回収してください。
以下のファイルを参照して、Interstage Java EE 7 DASサービスのプロセスIDを確認してください。
[Java EE 7共通ディレクトリ]\domains\domain1\config\pid |
[Java EE 7共通ディレクトリ]/domains/domain1/config/pid |
注意
ファイルが存在していない場合、またはjavaプロセスが存在しない場合、プロセスは存在していません。
1で確認したIDのプロセスがjavaプロセスとして存在しているか、以下の方法で確認してください。
Windowsのタスクマネージャで確認してください。
psコマンドを使用して確認してください。
1で確認したプロセスIDに対して、以下の方法でプロセスを回収してください。
Windowsのタスクマネージャでプロセスを終了させてください。
killコマンドを使用してプロセスを削除してください。
Interstage Java EE 7 DASサービスでのアプリケーション運用時の異常
Interstage Java EE 7 DASサービスでアプリケーションを運用する際の異常については、「12.3.3 アプリケーションの運用に関する異常」を参照してください。
PCMIサービスの異常終了
PCMIサービスが異常終了した場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
なお、PCMIサービスが異常終了すると、以下の機能は動作しません。ただし、運用中のアプリケーションの動作には影響ありません。
Interstage Java EE 7 DASサービスの起動/停止
IJServer クラスタの起動/停止
サーバーインスタンスの起動/停止
プロセスの生死監視
プロセスの生存通知監視
プロセスの停止時間監視
アプリケーション最大処理時間の監視
Java VMログ採取
PCMIサービス停止時のスクリプトの実行
Javaヒープ領域/メタスペース不足時の制御
注)PCMIサービスが異常終了すると、PCMIプロファイルの「Javaヒープ領域/メタスペース不足時の制御」の設定状態により以下のように動作します。
「restart」の場合
プロセスを再起動できないため、プロセスダウンとなります。
「oome」の場合
アプリケーションに「java.lang.OutOfMemoryError」が返却されます。動作には影響ありません。
正常な状態に復旧するには、以下の手順でリカバリを行ってください。
運用中のサーバーインスタンスを確認します。
asadminコマンドのlist-instancesサブコマンドで起動状態のサーバーインスタンスを確認してから、以下のファイルを参照し、起動状態のサーバーインスタンスのプロセスIDを確認してください。
[Java EE 7共通ディレクトリ]\nodes\localhost-domain1\<サーバーインスタンス名>\config\pid
[Java EE 7共通ディレクトリ]/nodes/localhost-domain1/<サーバーインスタンス名>/config/pid
注意
ファイルが存在していない場合、プロセスは存在していません。
1で確認したIDのプロセスがjavaプロセスとして存在しているか、以下の方法で確認してください。
Windowsのタスクマネージャで確認してください。
psコマンドを使用して確認してください。
注意
プロセスIDに対応するjavaプロセスが存在しない場合、プロセスは存在していません。
1で確認したプロセスIDに対して、以下の方法でプロセスを回収してください。
Windowsのタスクマネージャでプロセスを終了させてください。
killコマンドを使用してプロセスを削除してください。
Interstage Java EE 7 DASサービスのプロセス回収手順で、Interstage Java EE 7 DASサービスのプロセスを回収してください。
以下の手順でPCMIサービスを起動します。
Interstage PCMI(isje7)サービスを停止して、起動します。
PCMIサービスを起動します。
Interstage Java EE 7 DASサービスを再起動します。
IJServerクラスタを再起動します。
注意
リカバリを行わずにPCMIサービスを起動した場合、リカバリを行っていないサーバーインスタンスに対して正しい操作を行うことができません。リカバリを行って、正常な状態に復旧してください。
リカバリ対象は、PCMIサービスより前に起動しているサーバーインスタンスです。リカバリを行わずにPCMIサービスを起動した状態で、リカバリ対象のサーバーインスタンスを見分ける場合は、PCMIサービスの起動時刻とサーバーインスタンスの起動時刻を比較して判別してください。
なお、PCMIサービスの起動時刻はイベントログ/システムログに出力されたメッセージ「PCMI1000」の時刻、サーバーインスタンスの起動時刻はイベントログ/システムログに出力されたメッセージ「PCMI1002」の時刻でそれぞれ確認してください。
Interstage Java EE 7管理コンソールでIJServerクラスタの起動に失敗する場合
asadmin change-master-passwordサブコマンドの実行後、Interstage Java EE 7管理コンソールでIJServerクラスタの起動に失敗する
Interstage Java EE 7管理コンソールを使用する場合、IJServerクラスタの操作にはマスターパスワードを保存したファイルが必要です。asadmin change-master-passwordサブコマンド実行時に--savemasterpasswordオプションにfalseを指定した場合は、Interstage Java EE 7管理コンソールでIJServerクラスタの起動ができません。
asadmin change-master-passwordサブコマンドの--savemasterpasswordオプションにtrueを指定して再実行してください。
Javaヒープ領域獲得に失敗する
Javaヒープ領域が不足していることが原因でIJServerクラスタの起動に失敗する場合、「12.18 OutOfMemoryErrorがログに出力された場合」を参照し、Javaヒープのサイズを大きくしてください。
SEVERE: doSelect exception java.util.concurrent.RejectedExecutionException: The thread pool's task queue is full, limit: {0}
[可変情報]
{0}:キューサイズ
上記メッセージが頻繁に出力される場合、Interstage Java EE 7 DASサービスの運用管理用のスレッドプール「admin-thread-pool」に対して、キューサイズを拡張してください。
設定方法は、「6.14.4 運用管理用のスレッドプールのキューサイズ」を参照してください。