プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle HTTP Serverの管理
12c (12.1.3)
E56227-07
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

C Oracle HTTP Serverのトラブルシューティング

この付録では、Oracle HTTP Server (OHS)の使用時に発生する可能性がある一般的な問題およびその解決方法について説明します。内容は次のとおりです。

C.1 ポートの競合によりOracle HTTP Serverが起動できない

ポートの競合によりOracle HTTP Serverが起動できない場合に、次のエラーが発生することがあります。

[VirtualHost: main] (98)Address already in use: make_sock: could not bind to address [::]:7777

解決策

そのポートをすでに使用しているプロセスを判別し、Oracle HTTP ServerのIPポート・アドレスか、競合しているプロセスのポートを変更します。

C.2 多数のhttpdプロセスによるシステムのオーバーロード

1つのシステム上で実行中のhttpdプロセスが多すぎると、通常処理のためのリソースが不足し、レスポンス時間が低下します。

解決策

マシンが対処できる値までMaxClientsの値を下げます。

C.3 1024未満のポートでOracle HTTP Serverの起動時に発生する権限拒否

1024未満のポートでOracle HTTP Serverを起動しようとすると、次のエラーが発生します。

[VirtualHost: main] (13)Permission denied: make_sock: could not bind to address [::]:443

1024未満のポートでは、Oracle HTTP Serverは起動しません。これは、これらのポートをバインドするには、root権限が必要になるためです。

解決策

4.3.2.4項「特権ポートでのOracle HTTP Serverインスタンスの起動(UNIXのみ)」の手順に従って、特権ポートでOracle HTTP Serverを起動します。

C.4 PerSetEnvを設定解除し、変数を削除した場合にスローされる例外

Fusion Middleware Control mod_perl構成ページを使用してmod_perlを構成し、「環境」フィールドから構成済のPerSetEnv変数を削除しようとすると、次のエラーがスローされます。

Failed to invoke operation save on MBean
oracle.as.management.mbeans.register:type=component,name=ohs1,instance=webtier
 _inst7971,Location=AdminServer
Apply failed, modify required parameters and save again. Validation of
configuration trying to apply failed 

解決策

この状況に対処するには、次の手順に従います。

  1. ポップアップ・エラーを閉じて、「元に戻す」をクリックします。

  2. 次の手順のいずれかを実行して、PerSetEnvを削除します。

    • Fusion Middleware Controlの「詳細構成」ページに移動して、mod_perl.confファイルを直接変更します。

      または

    • DOMAIN_HOME/config/fmwconfig/components/OHS/componentName/moduleconf/mod_perl.confに移動して、構成ファイルを直接編集してPerSetEnv値を削除します。

  3. OHSを再起動します。

C.5 ログ・ファイルを使用したエラーの特定

次のログ・ファイルを使用すると、エラーの特定に役立ちます。

C.5.1 リライト・ログ

このログ・ファイルは、mod_rewriteが使用されている場合のデバッグに必要です。このログ・ファイルでは、リライト・エンジンによるリクエストの変換方法の詳細分析が生成されます。RewriteLogLevelディレクティブは詳細レベルを制御します。

C.5.2 スクリプト・ログ

このログ・ファイルでは、CGIスクリプトからの入出力を記録できます。このファイルはテストにのみ使用し、本番サーバーには使用しないでください。


関連項目:

次のApache HTTP Serverドキュメントの「ScriptLog」

http://httpd.apache.org/docs/current/mod/mod_cgi.html#scriptlog


C.5.3 エラー・ログ

このログ・ファイルには、全体的なサーバー問題が記録されます。エラー・ログを構成および表示する方法の詳細は、第8章「Oracle HTTP Serverログの管理」を参照してください。

C.6 リモート・ホストでのOHSインスタンスの回復

リモート・ホスト(管理サーバーを持たず、管理対象サーバーのみを持つホスト)にインストールされているOracle HTTP Serverインスタンスを回復する必要がある場合、このシナリオでは、pack.shunpack.shが動作しないので、taruntarを使用する必要があります。

C.7 Oracle HTTP Serverのパフォーマンスの問題

次に、Oracle HTTP Serverの実行時に発生する可能性があるフォーマンスの問題とその解決策を示します。

C.7.1 ネットワーク・ファイル・システムに置かれる特別なランタイム・ファイル

Oracle HTTP Serverは内部処理にロック(つまりロック・ファイル)を使用します。これらのファイルはロックが作成されると動的に作成され、ロックが取得または解放されるたびにアクセスされます。これらのファイルが低速なファイル・システム(たとえばネットワーク・ファイル・システム)に置かれると、サーバーのパフォーマンスが低下する場合があります。この問題を回避するには:

  • Linuxの場合

    1. httpd.confで、AcceptMutex fcntlAcceptMutex sysvsemに変更します(2箇所)。

    2. httpd.confで、LockFileディレクティブをコメントアウトします(3か所)。

  • Solarisの場合

    1. httpd.confで、AcceptMutex fcntlAcceptMutex pthreadに変更します(2箇所)。

    2. httpd.confで、LockFileディレクティブをコメントアウトします(3か所)。

  • その他のUNIXプラットフォーム

    httpd.confで、ローカル・ファイルシステムを示すようにLockFileディレクティブを変更します(3箇所)。

C.7.2 ネットワーク・ファイル・システムでのUNIXソケット

mod_cgidとmod_fastcgiはデフォルトでは有効になっていません。有効な場合、これらもモジュールはUNIXソケットを内部で使用します。UNIXソケットが低速なファイル・システム(たとえばネットワーク・ファイル・システム)に置かれると、大幅なパフォーマンスの低下が発生することがあります。次のディレクティブを設定して、この問題を回避できます。

  • mod_cgidが有効な場合は、ScriptSockディレクティブを使用してmod_cgidのUNIXソケットをローカル・ファイルシステムに配置します。

  • mod_fastcgi有効な場合は、FastCgiIpcDirディレクティブを使用してmod_fastcgiのUNIXソケットをローカル・ファイルシステムに配置します。


    注意:

    mod_fastcgiは、ワーカーとプリフォークの両方のMulti-Processing Modules (MPMs)と使用可能ですが、プリフォークMPMとのみ使用すべきです。詳細は、6.3項「Oracle HTTP Serverのパフォーマンス・ディレクティブの構成」を参照してください。

C.7.3 低速なファイル・システムに置かれたDocumentRoot

mod_wl_ohsを使用してリクエストをバックエンドのWLSサーバー/クラスタにルーティングし、DocumentRootが低速なファイル・システム(ネットワーク・ファイル・システムなど)に置かれている場合は、バックエンドのサーバーにルーティングされるすべてのリクエストでパフォーマンスの問題が発生することがあります。これは、SetHandler weblogic-handlerではなく、WLSRequestONに設定することで解決できます。

C.8 DMSの共有メモリーの不足

一部の極端な構成では、OHSのエラー・ログに次のメッセージが表示されます。

dms_fail_shm_expansion: out of DMS shared memory in pid XXX, disabling DMS; increase DMSProcSharedMem directive from YYY

これは、OHS DMSに必要な共有メモリーの誤った計算によるものです。これは、DMSProcSharedMemをデフォルトの4096より大きい値に設定することで解決できます。問題が解決するまで継続してDMSProcSharedMemを50%ずつ高く設定します。DMSProcSharedMemの最小値は256バイトで、最大値は65536です。

数百から数千もの多くの仮想ホストを持つ構成で、前述の回避策で解決できない場合は、かわりに環境変数OHS_DMS_BLOCKSIZEをOracle HTTP Serverがエラーなく開始する十分大きな値に設定できます。この変数の値は数キロバイトであり、524288は開始値として適切です。エラーが繰り返される場合は、Oracle HTTP Serverがエラーなく開始するまで値を50%ずつ増加させてください。

C.9 ライブラリが欠落すると、通知なしにHTTPDが終了することがある

WindowsプラットフォームでOracle HTTP Serverが機能するには、そのシステムにMicrosoft Visual C++ランタイム・ライブラリがインストールされている必要があります。インストールされていない場合、Oracle HTTP Serverは何も出力せずに、またはエラー・ダイアログ・ボックスを表示せずに(レジストリの設定に応じて)、終了することがあります。

回避策

Oracle HTTP Serverの起動に失敗し、Oracle HTTP Serverによってエラー・メッセージがサーバー・エラー・ログに記録されない場合は、次の手順に従って問題を診断します。

  1. 次のランタイム・ライブラリがインストールされていることを確認します。

    Microsoft Visual C++ 2008 機能拡張パック再頒布可能パッケージ(x64)。

    http://www.microsoft.com/en-us/download/details.aspx?id=16771


    重要

    このパッケージをインストールした後、このパッケージに対してMicrosoft社推奨のサービス・パックまたはその他の修正をインストールします。

    このパッケージが事前にインストールされていない場合、それをインストールした後にOracle HTTP Serverの起動を再度試みてください。

  2. コマンド・プロンプトからOracle HTTP Serverの起動を試みます。

    1. DOMAIN_HOME/servers/<ohs-instancename>/logsディレクトリがOracle HTTP Serverによって作成されていない場合は、これを作成します。

    2. Fusion Middleware ControlまたはWLSTを使用してOracle HTTP Serverを起動してみます。

    3. ファイルDOMAIN_HOME/servers/<ohs-instancename>/logs/lastinvocation.logを、新しいファイルstartohs.cmdにコピーします。

    4. 新しいコマンド・プロンプトを開き、startohs.cmdを実行します。

    5. このスクリプトの実行後にエラー・メッセージが生成された場合、これらのメッセージから起動の失敗を診断します。

    6. このスクリプトの実行後にエラー・メッセージが生成されない場合は、次の手順に進みます。


      注意:

      Oracle HTTP Serverは、このようにコマンド・プロンプトから起動した場合は適切に機能しません。Oracle HTTP Serverのこの起動方法は、診断のみを目的としています。

  3. Oracle HTTP Serverの起動を試みる場合は、Windowsエラー情報を収集します。

    Oracle HTTP Serverのライブラリ・エラーのエラー・レポートは、ご使用のシステムで禁止されていることがあります。エラー・レポートの検証または修正に関する情報は、Microsoft社の次の記事を参照してください。

    「HOWTO: How To Change Hard Error Popup Handling in Windows NT」

    http://support.microsoft.com/kb/128642

    ErrorModeに1を設定すると、Oracle HTTP Serverに関するライブラリ・エラーがレポートされない場合があります。モードを0に変更してハード・エラー・ポップアップを有効にするか、モードを2に変更してWindowsイベント・ログへのレポートを有効にします。


    重要

    0に変更した場合、診断情報を収集後にただちに前の値に戻してください。サーバーが無人状態のときエラーが発生すると運用上の問題となる可能性があります。

    推奨される設定は2分です。

    1. ErrorModeを目的の値に変更します。

    2. Fusion Middleware ControlまたはWLSTまたは前の手順で作成したstartohs.cmd.スクリプトを使用して、Oracle HTTP Serverの起動を試みます。

    3. ErrorModeの設定に応じて、ハード・エラー・ポップアップまたはWindowsイベント・ログ内の診断情報を確認します。

      Windowsイベント・ログを確認するには、Windows Event Viewerを開いて、Event Viewer (ローカル) / Windowsログ/ Applicationのログを表示します。

      Oracle HTTP Serverの起動の試行中に書き込まれたイベント・ログ・エントリを見つけます。

      ランタイム・ライブラリの検索に関するエラーは、イベントID 33または35のSideBySideエラーとしてレポートされる場合があり、そのテキストではライブラリのロードを試みるOracleライブラリ、およびロードされる特定のライブラリが示されます。例:

      level=Error
      Source=SideBySide
      Event Id = 33
      Activation context generation failed for "C:\work\Oracle\MD1212\ORACLE~1\bin\oraiau.dll".
      Dependent Assembly Microsoft.VC90.CRT,processorArchitecture="amd64",
      publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found.
      Please use sxstrace.exe for detailed diagnosis.
      

      示されたライブラリをインストールする必要があります。この例ではVC90と示されていますが、これは前述の手順1で説明したMicrosoft Visual C++ 2008ライブラリです。

    4. ErrorModeの設定を前の状態に戻します。

C.10 SSLFIPSによるAES暗号化ウォレットの使用

AES暗号化ウォレットがSSLFIPS ON (FIPSモードがオン)で使用されていないと、Oracle HTTP Serverが起動に失敗する場合があります。この問題が発生すると、次のメッセージがOracle HTTP Serverのログ(<OHS_instance>.log)に書き込まれます。

ウォレット・ファイルがオンザフライで変更されたときは完全再起動が必要です。

この問題を解決するには、AESを使用してウォレットを暗号化するか、AESを使用して暗号化された新しいウォレットを作成します。Oracle HTTP ServerでSSLFIPSモードを有効化するには、AESで暗号化された(compat_v12)ヘッダー付きで作成されたウォレットが必要になります。新しいウォレットを作成する場合、または既存のウォレットを変換する場合は、Oracle Fusion Middlewareの管理の次の各項を参照してください。

Orapki

AES暗号化によるOracleウォレットの作成

AES暗号化を使用するように既存のウォレットを変換