Java EEアプリケーションの運用環境に関する以下のトラブルについて対処方法を説明します。
IJServerクラスタ起動時の異常
IJServerクラスタの起動に失敗した場合は、以下のログにエラーメッセージが出力されていないか確認し、「メッセージ集」-「Java EEのメッセージラベルのあるメッセージ」を参照して起動失敗の原因を調査してください。
イベントログ(Windows)/システムログ(Solaris/Linux)
サーバーログ
Java VMログ
IJServerクラスタの起動処理遅延またはハングアップによりIJServerクラスタ起動待ち時間を超過した場合、Java VMログにJava VMプロセスのフルスレッドダンプが出力されます。フルスレッドダンプを参照し、遅延やハングアップの原因となっているアプリケーションがないか確認してください。
通信ポートを獲得できないために起動に失敗している場合は、「システム設計ガイド」-「ポート番号」を参照してポート番号をチューニングしてください。
Java VMログにJava VMの異常を示すメッセージが出力されている場合は、「トラブルシューティング集」の「Java実行環境運用時の異常」を参照し、起動に失敗した原因を調査してください。
各種ログに出力された情報から原因を特定できない場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
IJServerクラスタ停止時の異常
IJServerクラスタ停止時にcoreファイルが出力される場合、java.lang.Systemクラスやjava.langRuntimeクラスのrunFinalizersOnExit(Boolean)メソッドの引数に"true"を指定してファイナライズを有効にしているアプリケーションがないか確認してください。本メソッドは非奨励のため、利用しないでください。
サーバーインスタンスの異常終了
IJServerクラスタプロセスが異常終了した場合は、以下のログにエラーメッセージが出力されていないか確認し、「メッセージ集」-「Java EEのメッセージラベルのあるメッセージ」を参照して異常終了の原因を調査してください。
なお、プロセスの自動再起動機能により業務継続が可能です。
イベントログ(Windows)/システムログ(Solaris/Linux)
サーバーログ
Java VMログ
Java VMログおよびサーバーログにはJDK/JREの異常メッセージが出力される場合があります。調査の際は、以下のマニュアルも参照してください。
「チューニングガイド」の「JDK/JREのチューニング」
各種ログに出力された情報から原因を特定できない場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
なお、運用中にIJServerクラスタプロセスが異常終了した場合、プロセスの自動再起動機能により業務継続が可能です。詳細は、「Java EE運用ガイド」-「Java VMプロセスの生死監視」を参照してください。
サーバーインスタンスの状態取得コマンドの復帰に時間がかかる場合
サーバーインスタンスがメモリ不足などにより高負荷状態となっている場合、サーバーインスタンスの状態取得コマンド(asadmin list-instancesコマンド)の復帰に時間がかかり、かつ、結果として「unknown」が表示される場合があります。
このような場合、しばらく経ってからコマンドを再度実行してください。
なお、高負荷状態のサーバーインスタンスを停止したい場合は、IJServerクラスタ、または、サーバーインスタンスの強制停止を利用してください。
Interstage Java EE Node Agentサービス起動時の異常
Interstage Java EE Node Agentサービスの起動に失敗した場合は、以下のログにエラーメッセージが出力されていないか確認し、「メッセージ集」-「Java EEのメッセージラベルのあるメッセージ」を参照して起動失敗の原因を調査してください。
イベントログ(Windows)/システムログ(Solaris/Linux)
サーバーログ
通信ポートを獲得できないために起動に失敗している場合は、「システム設計ガイド」-「ポート番号」を参照してポート番号をチューニングしてください。
Interstage Java EE EE Node Agentサービス起動時に、タイムアウトが発生して起動に失敗する場合は、Interstage Java EE Node Agentサービスに関するタイムアウト値のチューニングにしたがってタイムアウト値のチューニングを行ってください。
各種ログに出力された情報から原因を特定できない場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
Interstage Java EE Node Agentサービス停止時の異常
Interstage Java EE EE Node Agentサービス停止時に、タイムアウトが発生して停止に失敗する場合、Interstage Java EE Node Agentサービスのプロセス回収手順にしたがって停止させた後、Interstage Java EE Node Agentサービスに関するタイムアウト値のチューニングにしたがってタイムアウト値のチューニングを行ってください。
Interstage Java EE Node Agentサービスの異常終了
Interstage Java EE Node Agentサービスが異常終了した場合、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
なお、Interstage Java EE Node Agentサービスが異常終了すると、以下の機能は動作しません。
IJServerクラスタのJava VMプロセスの生死監視
IJServerクラスタプロセス異常時の自動再起動
アプリケーション最大処理時間の監視 (注1)
Javaヒープ/Permanent世代領域不足時の制御
Java VMログ(jvm.log)への情報出力
IJServerクラスタの運用状態表示
注1)Javaヒープ/Permanent世代領域不足時の制御ではInterstage Java EE Node Agentサービスが異常終了していると、選択している制御方法により、以下の動作となります。
「プロセスを再起動する」の場合
プロセスの再起動を行うことができないため、プロセスダウンとなります。
「アプリケーションにjava.lang.OutofMemoryErrorを返却する」の場合
動作に影響はありません。
アプリケーションにjava.lang.OutofMemoryErrorが返却されます。
ただし、運用中のアプリケーションの疎通への影響はありません。
リカバリは、以下の手順で行います。
asadminコマンドのlist-instancesサブコマンドで運用中のサーバーインスタンスを確認します。
起動しているサーバーインスタンスに対して、以下のコマンドを実行します。
[Java EE共通ディレクトリ]\nodeagents\ijna\<サーバーインスタンス名>\bin\stopserv
[Java EE共通ディレクトリ]/nodeagents/ijna/<サーバーインスタンス名>/bin/stopserv
以下の手順でInterstage Java EE Node Agentサービスを起動します。
Interstage Java EE Node Agentサービスを停止して、再起動します。
Interstage Java EE Node Agentサービスを起動します。
IJServerクラスタを再度起動します。
注意
リカバリ手順を行わずにInterstage Java EE Node Agentサービスを起動した場合、リカバリを行っていないサーバーインスタンスに対する操作を正しく行うことができません。リカバリ手順を実施することで正常な状態に復旧することが可能です。
リカバリ手順を行わずにInterstage Java EE Node Agentサービスを起動した状態で、リカバリを行う対象のサーバーインスタンスを見分けるためには、Interstage Java EE Node Agentサービスの起動時刻とサーバインスタンスの起動時刻を比較することで判別可能です。サーバーインスタンスの起動時刻が小さい方をリカバリ対象と判断してください。
Interstage Java EE Node Agentサービスの起動時刻はシステムログ・イベントログに出力されるijna10000のメッセージの時刻を、サーバーインスタンスの起動時刻はサーバーログに出力されるSERVER1007の時刻をそれぞれ参照ください。
Interstage Java EE Node Agentサービスのプロセス回収手順
以下の手順により、Interstage Java EE Node Agentサービスのプロセスを回収してください。
以下のファイルを参照して、Interstage Java EE Node AgentサービスのプロセスIDを確認してください。
[Java EE共通ディレクトリ]\nodeagents\ijna\agent\config\.__com_sun_appserv_pid
[Java EE共通ディレクトリ]/nodeagents/ijna/agent/config/.__com_sun_appserv_pid
(注) ファイルが存在していない場合、またはjavaプロセスが存在しない場合、プロセスは存在していません。
1で確認したIDのプロセスがjavaプロセスとして存在しているか、以下の方法で確認してください。
Windowsのタスクマネージャで確認してください。
psコマンドを使用して確認してください。
1で確認したプロセスIDに対して、以下の方法でプロセスを回収してください。
Windowsのタスクマネージャでプロセスを終了させてください。
killコマンドを使用してプロセスを削除してください。
上記手順と合わせて、サーバーインスタンスのプロセスが存在している場合は、Interstage Java EE Node Agentサービスの異常終了を参照してサーバーインスタンスのプロセスの回収も行ってください。
Interstage Java EE Node Agentサービスに関するタイムアウト値のチューニング
下記のファイルを編集してください。
[Java EE共通ディレクトリ]\domains\interstage\config\domain.xml
[Java EE共通ディレクトリ]\nodeagents\ijna\agent\config\domain.xml
下記のname属性とvalue属性を定義した、system-property要素を追加してください。
(省略) <domain application-root="・・・ : (省略) : <system-property name="タイムアウト名" value="タイムアウト値"/> ★追加 <property name="administrative.domain.name" value="interstage"/> </domain>
指定可能なタイムアウト名は下記です。
起動処理で、状態がstartingに変化する時間
指定可能範囲は180~65535[秒]、デフォルト180です。
停止処理で、状態がnot runningに変化する時間
指定可能範囲は60~65535[秒]、デフォルト60です。
Interstage Java EE DASサービス起動時の異常
Interstage Java EE DASサービスの起動に失敗した場合は、以下のログにエラーメッセージが出力されていないか確認し、「メッセージ集」-「Java EEのメッセージラベルのあるメッセージ」を参照して起動失敗の原因を調査してください。
イベントログ(Windows)/システムログ(Solaris/Linux)
Interstage Java EE DASサービスのサーバーログ
サーバーログにメモリ不足を示すエラーメッセージが出力されている場合は、「チューニングガイド」-「Interstage Java EE DASサービスのヒープ領域サイズとアドレス空間」を参照して対処を行ってください。
ログファイルについての詳細は、「Java EE運用ガイド」-「Java EEアプリケーションのログ」を参照してください。
以下のログファイルに”java.lang.NoClassDefFoundError”が出力されている場合、環境変数PATHにダブルクォート(")が含まれている可能性があります。
[IJServerクラスタのログ出力ディレクトリ]\start.log
※) [IJServerクラスタのログ出力ディレクトリ]のデフォルトは、[Java EE共通ディレクトリ]\nodeagents\ijna\agent\logsです。
環境変数PATHにダブルクォートが含まれているとInterstage Java EE DASサービスが起動できないため、環境変数PATHを確認してダブルクォートが含まれている場合は、ダブルクォートを削除してください。
通信ポートの獲得失敗による起動失敗
通信ポートを獲得できないために起動に失敗している場合は、「システム設計ガイド」-「ポート番号」を参照してポート番号をチューニングしてください。
なお、他のサービス・プロセスとのポート番号重複によりInterstage Java EE DASサービスの起動に失敗している場合、重複したポート番号を利用しているサービス、プロセスを一旦停止した上で、Interstage Java EE DASサービスを起動して設定変更を行ってください。
メモリ不足による起動失敗
IJServerクラスタ、およびサーバーインスタンスを多く定義した場合、メモリ不足によりInterstage Java EE DASサービスの起動に失敗する場合があります。
メモリ不足によりInterstage Java EE DASサービスが起動しない場合は、下記手順に従いdomain.xmlを編集してください。
以下手順によりInterstage Java EE DASサービスのJavaヒープ領域を拡張します。
domain.xmlの格納先:
[Java EE共通ディレクトリ]\domains\interstage\config\domain.xml
[Java EE共通ディレクトリ]/domains/interstage/config/domain.xml
Interstage Java EE Node Agentサービスを停止してください。
Interstage Java EE DASサービスを停止してください。通常停止を実施できない場合には、本手順実施後にシステムを再起動してください。
domain.xmlを編集し、ヒープ領域サイズを増やしてください。
テキストエディタなどでファイルを開き、下記 -Xmx512m を -Xmx1024m に変更してください。
[編集する要素]
<domain> <configs> <config dynamic-reconfiguration-enabled="true" name="server-config"> <java-config> <jvm-options>-Xmx512m</jvm-options> |
asadmin verify-domain-xmlサブコマンドを利用し、定義の内容を検証してください。
Interstage Java EE DASサービスを起動してください。通常停止を行う際に失敗していた場合は、システムを再起動してください。
Interstage Java EE Node Agentサービスを起動してください。
クラスタの定義項目"ハートビート"が有効に設定されている場合、定義済みのIJServerクラスタを削除することにより、Interstage Java EE DASサービスのメモリ使用量を削減できる可能性があります。
"物理メモリ使用量"に記載した見積もり式に当てはめて削除する必要のあるIJServerクラスタ数を算出し、以下の手順でIJServerクラスタを削除してください。作業を行う前に、事前にIJServerクラスタの配備資源やdomain.xml、workers2.propertiesのバックアップをとることを推奨します。バック アップの方法は、「運用ガイド(基本編)」-「資源のバックアップとリストア」を参照してください。
domain.xmlの格納先:
[Java EE共通ディレクトリ]\domains\interstage\config\domain.xml
[Java EE共通ディレクトリ]/domains/interstage/config/domain.xml
workers2.propertiesの格納先:
C:\Interstage\F3FMjs5\conf\jk2\[Webサーバ名]\workers2.properties
/opt/FJSVjs5/conf/jk2/[Webサーバ名]/workers2.properties
Interstage Java EE Node Agentサービスを停止してください。通常停止を実施できない場合には、プロセスを強制停止してください。
Interstage Java EE DASサービスを停止してください。通常停止を実施できない場合には、プロセスを強制停止してください。
Webサーバを停止してください。詳細は、「Interstage HTTP Server 運用ガイド」を参照してください。
Interstage管理コンソールを停止してください。詳細は、「運用ガイド(基本編)」を参照してください。
以下のとおりdomain.xmlを編集してください。
heartbeatの無効化
すべてのIJServerクラスタに対応したcluster要素の"heartbeat-enabled"を"false"に設定してください。
<cluster config-ref="${IJServer名}-config" |
asadmin verify-domain-xmlサブコマンドを利用し、定義の内容を検証してください。
Webサーバを起動してください。詳細は、「Interstage HTTP Server 運用ガイド」を参照してください。
Interstage管理コンソールを起動してください。詳細は、「運用ガイド(基本編)」を参照してください。
Interstage Java EE DASサービスを起動してください。
asadminコマンド、またはGUIを利用して、削除対象のIJServerクラスタとサーバーインスタンスを削除してください。
Interstage Java EE Node Agentサービスを起動してください。
Java EE共通ディレクトリが参照できないことによる起動失敗
Java EE共通ディレクトリが参照できない場合、Interstage Java EE DASサービスの起動に失敗します。
クラスタサービス連携のためにJava EE共通ディレクトリを共用ディスクに配置している場合は、必ずJava EE共通ディレクトリを参照可能な運用ノードから操作を行ってください。
タイムアウトによる起動失敗
Interstage Java EE DASサービス起動時に、タイムアウトが発生して起動に失敗する場合、Interstage Java EE DASサービスに関するタイムアウト値のチューニングにしたがってタイムアウト値のチューニングを行ってください。
各種ログに出力された情報から原因を特定できない場合は、iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
Interstage Java EE DASサービス停止時の異常
Interstage Java EE DASサービス停止時に、タイムアウトが発生して停止に失敗する場合、Interstage Java EE DASサービスのプロセス回収手順にしたがって停止させた後、Interstage Java EE DASサービスに関するタイムアウト値のチューニングにしたがってタイムアウト値のチューニングを行ってください。
Interstage Java EE DASサービスの異常終了
Interstage Java EE DASサービスが異常終了した場合、システムログ/イベントログにエラーメッセージが通知されます。iscollectinfoコマンドで資料採取を行った上で技術員に連絡してください。
なお、Interstage Java EE DASサービスが異常終了すると、Interstage Java EE管理コンソール、およびasadminコマンドは利用できません。再度、Interstage Java EE DASサービスを起動することで、上記機能が有効になります。
Interstage Java EE DASサービスが操作を受け付けない場合
メモリ不足により、Interstage Java EE DASサービスが操作を受け付けできない状態となっている可能性があります。なお、この場合、Interstage Java EE DASサービスが起動していても、ijdasstatコマンドが「unknown」を表示することがあります。
Interstage Java EE DASサービスのサーバーログを参照し、メモリ不足を示すエラーメッセージが出力されていないか確認してください。。
ログファイルについての詳細は、「Java EE運用ガイド」-「Java EEアプリケーションのログ」を参照してください。
サーバーログにメモリ不足を示すエラーメッセージが出力されている場合は、Interstage Java EE DASサービスのプロセス回収手順を参照してプロセスを回収した上、以下マニュアルを参照してヒープサイズのチューニングを実施してください。
「チューニングガイド」-「Interstage Java EE DASサービスのヒープ領域サイズとアドレス空間」
Interstage Java EE DASサービスの状態取得コマンドの復帰に時間がかかる場合
Interstage Java EE DASサービスがメモリ不足などにより高負荷状態となっている場合、Interstage Java EE DASサービスの状態取得コマンド(ijdasstatコマンド)の復帰に時間がかかり、かつ、結果として「unknown」が表示される場合があります。
このような場合、しばらく経ってからコマンドを再度実行してください。
なお、高負荷状態のInterstage Java EE DASサービスを停止したい場合は、Interstage Java EE DASサービスのプロセス回収手順を参照してプロセスを回収してください。
Interstage Java EE DASサービスのプロセス回収手順
以下の手順により、Interstage Java EE DASサービスのプロセスを回収してください。
以下のファイルを参照して、Interstage Java EE DASサービスのプロセスIDを確認してください。
[Java EE共通ディレクトリ]\domains\interstage\config\.__com_sun_appserv_pid
[Java EE共通ディレクトリ]/domains/interstage/config/.__com_sun_appserv_pid
(注) ファイルが存在していない場合、またはjavaプロセスが存在しない場合、プロセスは存在していません。
1で確認したIDのプロセスがjavaプロセスとして存在しているか、以下の方法で確認してください。
Windowsのタスクマネージャで確認してください。
psコマンドを使用して確認してください。
1で確認したプロセスIDに対して、以下の方法でプロセスを回収してください。
Windowsのタスクマネージャでプロセスを終了させてください。
killコマンドを使用してプロセスを削除してください。
Interstage Java EE DASサービスに関するタイムアウト値のチューニング
下記のファイルを編集してください。
[Java EE共通ディレクトリ]\domains\interstage\config\domain.xml
下記のname属性とvalue属性を定義した、system-property要素を追加してください。
(省略) <domain application-root="・・・ : (省略) : <system-property name="タイムアウト名" value="タイムアウト値"/> ★追加 <property name="administrative.domain.name" value="interstage"/> </domain>
指定可能なタイムアウト名は下記です。
起動処理で、状態がstartingに変化する時間
指定可能範囲は180~65535[秒]、デフォルト180です。
起動処理で、状態がrunningに変化する時間
指定可能範囲は1200~65535[秒]、デフォルト1200です。
停止処理で、状態がnot runningに変化する時間
指定可能範囲は60~65535[秒]、デフォルト60です。
Interstage Java EE DASサービスでのアプリケーション運用時の異常
Interstage Java EE DASサービスでアプリケーションを運用する際の異常については、「10.2.3 アプリケーションの運用に関する異常」を参照してください。