Interstage Java EE 6 DASサービスおよびサーバーインスタンスのアプリケーションに対して、PCMIサービスはアプリケーション最大処理時間を監視します。
アプリケーション最大処理時間の監視では、アプリケーションのハングアップやレスポンス遅延を検出します。本機能は、Webアプリケーション、EJBアプリケーション、Message-driven Beanに対して、プロセス外から呼び出された場合に有効となります。
アプリケーション最大処理時間を超過した場合の動作は、PCMIプロファイルの「アプリケーション最大処理時間超過時の制御」で設定します。
「アプリケーション最大処理時間超過時の制御」に指定可能な動作を以下に示します。
アプリケーション最大処理時間の省略値は、480秒です。
アプリケーション最大処理時間を超過した場合、同一インスタンスに対してアプリケーション最大処理時間の超過を10分間検出しません。
アプリケーション最大処理時間の超過を10分以内に検出する場合は、IJServerクラスタ/サーバーインスタンスを再起動してください。
通知しない
アプリケーション最大処理時間を超過した場合、以下の処理を行います。
Java VMログに1回目のフルスレッドダンプを出力します。
1.の10秒後、Java VMログに2回目のフルスレッドダンプを出力します。
注意
アプリケーション最大処理時間を検出したスレッドは回収されずに処理を継続するため、警告メッセージ出力後に、アプリケーションの処理が成功する場合があります。
警告メッセージを出力する
アプリケーション最大処理時間を超過した場合、以下の処理を行います。
イベントログ/システムログに、警告メッセージ「PCMI1106」を出力します。
Java VMログに1回目のフルスレッドダンプを出力します。
2.の10秒後、Java VMログに2回目のフルスレッドダンプを出力します。
注意
アプリケーション最大処理時間を検出したスレッドは回収されずに処理を継続するため、警告メッセージ出力後に、アプリケーションの処理が成功する場合があります。
特定のIJServerクラスタ配下の複数サーバーインスタンスで、同時にアプリケーション最大処理時間を超過した場合、警告メッセージ「PCMI1106」は1回だけ出力されます。
プロセスを強制停止する
アプリケーション最大処理時間を超過した場合、以下の処理を行います。
イベントログ/システムログに、エラーメッセージ「PCMI1107」を出力します。
Java VMログに1回目のフルスレッドダンプを出力します。
2.の10秒後、Java VMログに2回目のフルスレッドダンプを出力します。
3.の10秒後、プロセスを強制停止します。
注意
プロセスが強制停止されるまでに最低20秒を要するため、その間にアプリケーションが正常に復帰する場合があります。
強制停止のタイミングにより、以下の状態になる場合があります(クライアントにすべてのレスポンスを正常に送信できた場合を除く)。
アプリケーションがレスポンス未送信の状態で強制停止された場合は、クライアントにレスポンスが返らずに、通信が切断されます。ただし、クライアントからWebサーバを経由してアクセスしている場合は、Webサーバコネクタが異常を検知して、クライアントにステータスコード500を返します。
アプリケーションがレスポンスの一部だけを送信し、レスポンスの送信が未完了の状態で強制停止された場合は、強制停止時点でクライアントに送信済みのデータを取り戻せないため、クライアントに送信済みのデータ(ステータスライン、ヘッダー、メッセージボディ)までが送信されます。この場合、アプリケーションが返却した結果に依存するため、ステータスコード200以外を返すことがあります。
参照
「アプリケーション最大処理時間」および「アプリケーション最大処理時間超過時の制御」の設定方法については、「6.2.1 PCMIプロファイルの変更方法」を参照してください。
PCMIサービスの定義項目については、「7.1 PCMIサービスの定義項目」を参照してください。