6 Oracle WebLogic Serverプロキシ・プラグインの実装に関するトラブルシューティング

Oracle WebLogic Serverプロキシ・プラグインの使用時に問題が発生することがあります。これらの問題の解決方法について説明します。

この章の内容は次のとおりです。

Oracle WebLogic Serverのセッションの問題

Oracle WebLogic Serverプロキシ・プラグインは、リクエストをバックエンドのOracle WebLogic Serverまたはクラスタにルーティングします。Oracle WebLogic Serverでは、同一クライアントからの後続リクエストが同一サーバーにルーティングされるようにセッションを維持します。ただし、様々な理由で、Oracle WebLogic Serverプロキシ・プラグインがOracle WebLogic Serverサーバーと通信できない場合、リクエストは次のように処理されます:
  • リクエストが単一のOracle WebLogic Serverインスタンスにルーティングされる場合、Oracle WebLogic Serverプロキシ・プラグインは、ConnectTimeoutSecsConnectRetrySecsの比率で指定されている最大再試行回数まで、同じOracle WebLogic Serverインスタンスへの接続を試行し続けます。すべての試みが失敗すると、クライアントにHTTP 503エラー・メッセージが返されます。
  • リクエストがWebLogicクラスタにルーティングされる場合、現在のOracle WebLogic Serverが不良とマークされ、リクエストは次の使用可能なOracle Weblogic Serverにルーティングされます。すべての試みが失敗すると、クライアントにHTTP 503エラー・メッセージが返されます。

HTTP 503エラー・メッセージが送信されるほか、レスポンスとしてHTTPクライアントで次のメッセージが表示されます。

Failure of Web Server bridge:
No backend server available for connection: timed out after xx seconds or idempotent set to OFF or method not idempotent.

CONNECTION_REFUSEDエラー

場合によっては、負荷の高い状況下でいくつかのリクエストが失敗し、エラー・ログ・ファイルにエラーが記録されることがあります。

次のエラーがログ・ファイルに記録されます:

weblogic: Trying GET /uri at backend host 'xx.xx.xx.xx/port; got exception 'CONNECTION_REFUSED [os error=xxx, line xxxx of URL.cpp]: apr_socket_connect call failed with error=xxx, host=xx.xx.xx.xx, port=xxxx'

「CONNECTION_REFUSEDエラーを減らすためのヒント」で説明されているように、Oracle WebLogic Serverが最大許容バックログ接続に達した可能性があります。

解決するには、「CONNECTION_REFUSEDエラーを減らすためのヒント」で説明されているステップに従ってください。

NO_RESOURCESエラー

場合によっては、負荷の高い状況下でいくつかのリクエストが失敗し、エラー・ログ・ファイルにエラーが記録されることがあります。

次のエラーがログ・ファイルに記録されます:

weblogic: *******Exception type [NO_RESOURCES] (apr_socket_connect call failed with error=70007, host=xx.xx.xx.xx, port=xxxx) raised at line xxxx of URL.cpp

これは通常、Oracle WebLogic Serverがビジー状態でOracle WebLogic Serverプロキシ・プラグインからの接続リクエストに応答できない場合に発生します。WLSocketTimeoutSecsの値を大きくすることで解決される場合があります。これにより、Oracle WebLogic Serverプロキシ・プラグインが、接続リクエストに対するOracle WebLogic Serverのレスポンスを待機する時間が長くなります。

POSTデータ・ファイルの問題

UNIXの場合、一時POSTファイルは/tmp/_wl_proxyの下にあります。Windowsの場合は、次の場所にあります(WLTempDirを指定していない場合)。
  • 環境変数TMP
  • 環境変数TEMP
  • C:\Temp
/tmp/_wl_proxyは固定ディレクトリで、HTTPサーバーのユーザーが所有します。異なるユーザーによって複数のHTTPサーバーがインストールされている場合は、一部のHTTPサーバーがこのディレクトリに書き込めない場合があります。このような状況では、エラーが発生します。

この問題を解決するには、WLTempDirパラメータを使用して、POSTデータ・ファイル用の_wl_proxyディレクトリに別の場所を指定します。