この付録では、Oracle HTTP Server (OHS)の使用時に発生する可能性がある一般的な問題およびその解決方法について説明します。内容は次のとおりです。
ポートの競合が原因でOracle HTTP Serverが起動できない場合、次のエラーが発生する可能性があります。
[VirtualHost: main] (98)Address already in use: make_sock: could not bind to address [::]:7777
解決策
そのポートをすでに使用しているプロセスを判別し、Oracle HTTP ServerのIPポート・アドレスか、競合しているプロセスのポートを変更します。
1つのシステム上で実行中のhttpdプロセスが多すぎると、通常処理のためのリソースが不足し、レスポンス時間が低下します。
解決策
マシンが対処できる値までMaxClients
の値を下げます。
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を起動します。
PERL5LIB
変数内に定義されているパスにローカルなPerlモジュール(PM)ファイルをOracle HTTP Serverが見つけられない場合、次のエラーが発生し、Oracle HTTP Serverが起動できないことがあります。
[error] Can't locate mod_perl.pm in @INC (@INC contains:$ORACLE_HOME/perl/...)
または
[error] Can't locate Apache::Registry.pm in @INC (@INC contains: $ORACLE_HOME/perl/...)
解決策
ORACLE_HOME/ohs/bin/apachectlがPERL5LIB変数内に正しく定義されていることを確認します。PMファイルが含まれているパスが指定されている必要があります。デフォルトでは、次のディレクトリ内のPMファイルが指定されています。
ORACLE_HOME
/ohs/mod_perl/lib/site_perl/5.10.0ORACLE_HOME
/perl/lib/5.10.0ORACLE_HOME
/perl/lib/site_perl/5.10.0
EM 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 . . .
解決策
この状況に対処するには、次の手順に従います。
ポップアップ・エラーを閉じて、「元に戻す」をクリックします。
次の手順のいずれかを実行して、PerSetEnv
を削除します。
Fusion Middleware Controlの「詳細構成」ページに移動して、mod_perl.confファイルを直接変更します。
または
DOMAIN_HOME/config/fmwconfig/components/OHS/componentName/moduleconf/mod_perl.confに移動して、構成ファイルを直接編集してPerSetEnv
値を削除します。
OHSを再起動します。
次のログ・ファイルを使用すると、エラーの特定に役立ちます。
このログ・ファイルは、mod_rewriteが使用されている場合のデバッグに必要です。このログ・ファイルでは、リライト・エンジンによるリクエストの変換方法の詳細分析が生成されます。詳細レベルは、RewriteLogLevel
ディレクティブを使用して制御します。
このログ・ファイルでは、CGIスクリプトからの入出力を記録できます。このファイルはテストにのみ使用し、本番サーバーには使用しないでください。
関連項目: 次のApache HTTP Serverドキュメントの「ScriptLog」
|
このログ・ファイルには、全体的なサーバー問題が記録されます。エラー・ログを構成および表示する方法の詳細は、第7章「Oracle HTTP Serverログの管理」を参照してください。
リモート・ホスト(管理サーバーを持たず、管理対象サーバーのみを持つホスト)にインストールされているOracle HTTP Serverインスタンスを回復する必要がある場合、このシナリオでは、pack.sh
とunpack.sh
が動作しないので、tar
とuntar
を使用する必要があります。
次に、Oracle HTTP Serverの実行時に発生する可能性があるフォーマンスの問題とその解決策を示します。
Oracle HTTP Serverは内部処理にロック(つまりロック・ファイル)を使用します。これらのファイルはロックが作成されると動的に作成され、ロックが取得または解放されるたびにアクセスされます。これらのファイルが低速なファイル・システム(たとえばネットワーク・ファイル・システム)に置かれると、サーバーのパフォーマンスが低下する場合があります。この問題を回避するには:
Linuxの場合
httpd.confで、AcceptMutex
fcntl
をAcceptMutex sysvsem
に変更します(2箇所)。
httpd.confで、LockFile
ディレクティブをコメントアウトします(3か所)。
Solarisの場合
httpd.confで、AcceptMutex fcntl
をAcceptMutex pthread
に変更します(2箇所)。
httpd.confで、LockFile
ディレクティブをコメントアウトします(3か所)。
その他のUNIXプラットフォーム
httpd.confで、ローカル・ファイルシステムを示すようにLockFile
ディレクティブを変更します(3箇所)。
mod_cgidとmod_fastcgiはデフォルトでは有効になっていません。有効な場合、これらもモジュールはUNIXソケットを内部で使用します。UNIXソケットが低速なファイル・システム(たとえばネットワーク・ファイル・システム)に置かれると、大幅なパフォーマンスの低下が発生することがあります。次のディレクティブを設定して、この問題を回避できます。
mod_cgidが有効な場合は、ScriptSock
ディレクティブを使用してmod_cgidのUNIXソケットをローカル・ファイルシステムに配置します。
mod_fastcgi有効な場合は、FastCgiIpcDir
ディレクティブを使用してmod_fastcgiのUNIXソケットをローカル・ファイルシステムに配置します。
mod_wl_ohsを使用してリクエストをバックエンドのWLSサーバー/クラスタにルーティングし、DocumentRootが低速なファイル・システム(ネットワーク・ファイル・システムなど)に置かれている場合は、バックエンドのサーバーにルーティングされるすべてのリクエストでパフォーマンスの問題が発生することがあります。これは、SetHandler
weblogic-handler
ではなく、WLSRequest
をON
に設定することで解決できます。
一部の極端な構成では、OHSのエラー・ログに次のメッセージが表示されます。
dms_fail_shm_expansion: out of DMS shared memory in pid XXX, disabling DMS; increase DMSThreadSharedMem directive from YYY
これは、OHS DMSに必要な共有メモリーの誤った計算によるものです。これは、DMSThreadSharedMem
をデフォルトの350より大きい値に設定することで解決できます。問題が解決するまで継続してDMSThreadSharedMem
を50%ずつ高く設定します。
数百から数千もの多くの仮想ホストを持つ構成で、前述の回避策で解決できない場合は、かわりに環境変数OHS_DMS_BLOCKSIZEを必要な値に設定できます。