My Oracle Support Banner

WebLogic Server サポート パターン JDBC によるサーバ ハング の調査 (Doc ID 1988923.1)

Last updated on OCTOBER 22, 2018

適用範囲:

Oracle WebLogic Server - バージョン 6.1 以降
この文書の内容はすべてのプラットフォームに適用されます。
***Checked for relevance on 30-Jan-2015***

目的

このドキュメントは、JDBC 設定および関連リソースによるサーバ ハングという問題のトラブルシューティングおよび解決のサポートパターンです。

問題の説明

アプリケーションまたは WebLogic Server 自身で使用される JDBC 接続において、呼び出しを行うと、その間ずっと WebLogic Server の 1 つの実行スレッドがブロックされます。 実行可能なスレッドには、JVM によりスレッドのスケジューリング メカニズムに基づいて CPU が割り当てられます (SQL クエリでブロック状態にあるスレッドは待機する必要があります)。ただし、JDBC呼び出しに占有されているスレッドは、SQL クエリで呼び出しの応答が返ってくるまでアプリケーション用に確保されます。

このトランザクションに参加しているリソースによって実行されるアクションは、トランザクションのタイムアウト時刻に達しても強制終了されずタイムアウトとなりません。これらのアクションは、中断することなく完了まで実行されます。トランザクションのタイムアウト時刻になると、このトランザクションにはフラグが設定され、ロールバックのみを行うことが指定されます。したがって、後続のリクエストでこのトランザクションをコミットしようとしても処理は失敗し、TimedOutException またはRollbackException が返されます。ただし、上述のように、JDBC 呼び出しが長時間実行されると WebLogic Server の実行スレッドがブロックされる可能性があり、受信リクエストを処理する実行スレッドがなくなるとインスタンスがハングする可能性があります。

WebLogic Server の最新バージョンには状態チェック機能があり、一定期間 (デフォルトは 600 秒) 無反応のスレッドがないかどうかが定期的にチェックされます。このようなスレッドがあると、次のようなエラー メッセージがログ ファイルに記録されます。

状態チェック機能の時間間隔はコンフィグレーションできます。config.xmlファイルで、<Server> タグに指定されているStuckThreadMaxTime プロパティを確認してください。このプロパティについては http://otndnld.oracle.co.jp/document/products/wls/docs81/config_xml/Server.html#StuckThreadMaxTime  に説明があります。また、「実行スレッドの検出動作のチューニング」 (http://otndnld.oracle.co.jp/document/products/wls/docs81/perform/WLSTuning.html#1125714)も参照してください。

問題のトラブルシューティング

プログラミング技法や JDBC 接続プールのコンフィグレーションが異なると、デッドロックが発生したり JDBC 呼び出しが長時間実行される可能性があり、その結果 WebLogic Server インスタンスがハングします。WebLogic Server インスタンスのハングをトラブルシューティングし分析する方法に関する一般的な情報については、「Generic Server Hang Pattern」 (<note 782125.1>)を参照してください。

「Generic Server Hang Pattern」では、サーバ ハングの原因となる JDBC 呼び出しについて、および WebLogic Server インスタンスのハングの原因となる一般的な問題のうち JDBC 関連のものについて説明しています。

トラブルシューティングの手順

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


本書の内容
目的
 問題の説明
 問題のトラブルシューティング
トラブルシューティングの手順
 問題の原因
 DriverManager.getConnection() の同期
 SQL クエリの長時間実行
 データベースのハング
 ネットワークの速度が遅い
 デッドロック
 RefreshMinutes または TestFrequencySeconds
 プールの縮小
 ハングしている WebLogic Server インスタンスの分析
 JDBC コードと JDBC 接続プールのコンフィグレーションを最適化するためのヒント
 JDBC プログラミング
 JDBC 接続プールのコンフィグレーション
 確認済みの問題
 さらにサポートが必要な場合
参照情報

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.