この章では、Oracle HTTP Serverを管理および監視する方法について説明します。また、現在の環境でOracle HTTP Serverを管理するための手順とツールについても説明します。
注意: このドキュメントの情報は、Oracle HTTP ServerがOracle WebLogic ServerおよびOracle Fusion Middleware Controlにインストールされている場合に適用できます。このドキュメントの対象読者は、『Oracle Fusion Middlewareコンセプト・ガイド』および『Oracle Fusion Middleware管理者ガイド』の説明に従ってOracle Fusion Middlewareの主要概念を十分に理解しておく必要があります。スタンドアロン・モードでのOracle HTTP Serverのインストールについては、『Oracle Fusion Middleware Oracle Web Tierインストレーション・ガイド』のOracle WebLogic Serverを使用せずに行うOracle Web Tierのインストールに関する項を参照してください。 |
この章の内容は、次のとおりです。
次の各項で、Oracle HTTP Serverの処理モデルについて説明します。
Oracle HTTP Serverを起動すると、HTTPまたはHTTPSリクエストをリスニングしてレスポンスを返す準備ができたことになります。Microsoft Windowsシステムでのリクエスト処理モデルは、UNIXシステムでのモデルとは異なります。
Microsoft Windowsの場合は、親プロセスと子プロセスが1つずつあります。子プロセスにより、クライアント・リクエストのハンドリングを担当するスレッドが作成されます。作成されるスレッドの数は静的で、パフォーマンス向上のために構成可能です。
UNIXの場合、複数の子プロセスを管理する親プロセスは1つです。子プロセスは、リクエストのハンドリングを担当します。親プロセスは、構成に基づき、必要に応じて追加の子プロセスを作成します。サーバーでは動的に追加の子プロセスを作成できますが、追加の子プロセスを作成しなくても、リクエストを処理できる十分な子プロセスを最初から開始するようにサーバーを構成することが最善策です。
Oracle HTTP Serverは、親プロセスに障害が発生した場合に単一ユニットとして終了する機能が備わっています。親プロセスは、Oracle HTTP Serverインスタンスのすべての子プロセスを起動および停止する役割を持ちます。子プロセスを停止する前に親プロセスに障害が発生すると、Oracle HTTP Serverは不整合な状態になります。この状態を修正するには、親のないすべての子プロセスを手動で停止するしかありません。新しいOracle HTTP Serverインスタンスがアクセスする必要のあるポートは親のない子プロセスによってまだ占有されているため、すべての子プロセスを閉じるまで、新しいOracle HTTP Serverを起動することはできません。
この状況を回避するため、UNIXでは子プロセス内のDMSインスツルメンテーション・レイヤーにより、WindowsではWinNT MPM内の監視機能により、親プロセスが監視されます。親プロセスの障害発生が検出されると、残りの子プロセスはすべて停止されます。
この機能をOPMNと組み合せると、親プロセスの障害発生時にOracle HTTP Serverを簡単に再起動できることになります。UNIXではDMSインスツルメンテーション・レイヤーにより、WindowsではWinNT MPM内のモニターにより、Oracle HTTP Serverのすべての子プロセスが確実に停止され、新しいOracle HTTP Serverインスタンスのために常にポートは開かれた状態となります。またOPMNにより、元のインスタンスの障害が検出されると確実に新しいインスタンスが起動されます。
Oracle Fusion Middlewareは、Oracle HTTP Serverの実行時パフォーマンスを自動的かつ継続的に測定します。パフォーマンス・メトリックは自動的に有効になるため、メトリックを収集するためにオプションの設定や追加構成の実行は必要ありません。アプリケーションの実行速度が遅い、アプリケーションがハングするなどの問題が発生した場合は、特定のメトリックを表示して、その問題の詳細情報を調べることができます。
Fusion Middleware Controlはリアルタイムのデータを提供することに注意してください。履歴データを表示する必要がある場合は、Grid Controlの使用を考慮してください。
メトリックは、Fusion Middleware ControlのOracle HTTP Serverホーム・メニューから表示できます。
監視対象のOracle HTTP Serverを選択します。
Oracle HTTP Serverのホームページが表示されます。
「Oracle HTTP Server」メニューから「監視中」を選択し、「パフォーマンス・サマリー」を選択します。
「パフォーマンス・サマリー」ページが表示されます。このページに、パフォーマンス・メトリックと、Oracle HTTP Serverインスタンスのレスポンス時間およびリクエスト処理時間に関する情報が表示されます。
その他のメトリックを表示するには、「メトリック・パレットの表示」をクリックし、メトリックのカテゴリを開きます。
ヒント: Oracle HTTP Serverホーム・メニューからは、Oracle HTTP Serverのポート使用状況情報も利用できます。 |
次の図は、「メトリック・パレット」が表示されたOracle HTTP Serverの「パフォーマンス・サマリー」ページを示しています。
追加のメトリックを選択して、「パフォーマンス・サマリー」に追加します。
この項では、Oracle HTTP Serverのパフォーマンス分析に役立つ、最もよく使用されるメトリックをいくつか示します。
OHSサーバー・メトリック
「OHSサーバー・メトリック」フォルダには、Oracle HTTP Serverのパフォーマンス・メトリック・オプションが含まれます。次の表に、「OHSサーバー・メトリック」フォルダに含まれるメトリックを示します。
要素 | 説明 |
---|---|
CPU使用率 | CPU使用率とアイドル時間 |
メモリー使用量 | メモリー使用量と空きメモリー(MB単位) |
プロセス | ビジーおよびアイドル・プロセス・メトリック |
リクエスト・スループット | リクエスト/秒単位で測定されたリクエスト・スループット |
リクエスト処理時間 | リクエスト処理時間(秒単位) |
レスポンス・データ・スループット | レスポンス・データ・スループット(KB/秒単位) |
レスポンス・データ処理 | レスポンス・データ処理(KB/秒単位) |
アクティブなHTTP接続 | アクティブなHTTP接続の数 |
接続期間 | 接続時間の長さ |
HTTPエラー | HTTP 4xxおよび5xxエラーの数 |
OHS仮想ホスト・メトリック
「OHS仮想ホスト・メトリック」フォルダには、仮想ホスト(アクセス・ポイントとも呼ばれる)のパフォーマンス・メトリック・オプションが含まれます。次の表に、「OHS仮想ホスト・メトリック」フォルダに含まれるメトリックを示します。
要素 | 説明 |
---|---|
仮想ホストに対するリクエスト・スループット | 各仮想ホストに対する1秒当たりのリクエストの数 |
仮想ホストに対するリクエスト処理時間 | 各仮想ホストで1つのリクエストを処理する時間 |
仮想ホストに対するレスポンス・データ・スループット | 各仮想ホストで送信されたデータの量 |
仮想ホストに対して処理されたレスポンス・データ | 各仮想ホストで処理されたデータの量 |
OHSモジュール・メトリック
「OHSモジュール・メトリック」フォルダには、モジュールのパフォーマンス・メトリック・オプションが含まれます。次の表に、「OHSモジュール・メトリック」フォルダに含まれるメトリックを示します。
要素 | 説明 |
---|---|
リクエスト・ハンドリング・スループット | モジュールのリクエスト・ハンドリング・スループット(リクエスト/秒単位) |
リクエスト・ハンドリング時間 | モジュールのリクエスト・ハンドリング時間(秒単位) |
モジュール・メトリック | モジュールと、各モジュールのアクティブ・リクエスト、スループットおよび時間 |
Oracle HTTP Serverでは、httpd.conf
内のディレクティブが使用されます。この構成ファイルは、同時に処理できるHTTPリクエストの最大数、ロギングの詳細、および特定の制限やタイムアウトを指定するものです。Oracle HTTP Serverでは次の3つのMulti-Processing Module(MPM)をサポートし、またこれらが付属しています。これらのモジュールは、マシン上のネットワーク・ポートへのバインド、リクエストの受入れ、およびリクエストを処理するための子のディスパッチを行います。
Worker: これは、UNIXおよびLinuxプラットフォームにおけるOracle HTTP ServerのデフォルトMPMです。このMPMは、マルチプロセスでマルチスレッドのハイブリッド・サーバーを実装します。このサーバーは、リクエストの処理にスレッドを使用することで、プロセスベースのサーバーよりも少ないシステム・リソースで多数のリクエストを処理できます。しかし、このサーバーは、それぞれが多数のスレッドを持つ複数のプロセスを常に使用可能にしておくため、安定性はプロセスベースのサーバーとほとんど変わりません。
WinNT: これは、WindowsプラットフォームにおけるOracle HTTP ServerのデフォルトMPMです。このMPMは、単一の制御プロセスを使用して単一の子プロセスを起動します。この子プロセスによって、リクエストを処理するためのスレッドが作成されます。
Prefork: このMPMは、Apache 1.3と同様の方法でリクエストを処理する、スレッドを使用しないプリフォーク・サーバーを実装します。これは、スレッド・セーフでないライブラリとの互換性のためにスレッドを回避する必要のあるサイトに適しています。またこのMPMは、1つのリクエストに関連する問題が他のリクエストに影響を与えないように、各リクエストを分離する場合に最も適しています。
この項での説明および推奨は、スレッドを使用するWorker MPMまたはWinNT MPMに基づいています。プリフォークMPMを使用している場合、次に示したディレクティブは適用されない可能性があります。プリフォークMPMを使用するApache 1.3またはApache 2.2に基づいてOracle HTTP Serverを使用している場合は、Oracle Application Server 10gリリース3のドキュメントを参照してください。
「パフォーマンス・ディレクティブ」ページでは、Oracle HTTP Serverのパフォーマンス関連ディレクティブをチューニングできます(次の図を参照)。
パフォーマンス・ディレクティブの管理は、リクエスト構成、接続構成およびプロセス構成という3つの領域で構成されます。これらの構成は、Fusion Middleware Controlの「パフォーマンス・ディレクティブ」ページを使用して、次の各項に示す手順に従って設定できます。
Fusion Middleware Controlを使用してOracle HTTP Serverのリクエスト構成を指定するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
「最大リクエスト数」フィールド(MaxClients
ディレクティブ)に最大リクエスト数を入力します。この設定により、一度に処理されるリクエストの数が制限されます。デフォルト値(推奨値)は150です。これは、Linux専用です。
子プロセス1件当たりの最大リクエスト数フィールド(MaxRequestPerChild
ディレクティブ)で、子プロセス1件当たりの最大リクエスト数を設定します。無制限または最大数を選択できます。無制限を選択した場合には、このフィールドに最大数を入力します。
「リクエスト・タイムアウト(秒)」フィールド(Timeout
ディレクティブ)にリクエスト・タイムアウト値を入力します。この値により、Oracle HTTP ServerがGETリクエストの受信を待機する最大時間(秒単位)、POSTまたはPUTリクエストでTCPパケットを受信する際の間隔時間、および応答時にTCPパケットを転送する際のACKの間隔時間を設定します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。4.1.4項を参照してください。
リクエスト構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。
Fusion Middleware Controlを使用して接続構成を指定するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
「接続キューの最大長」フィールド(ListenBacklog
ディレクティブ)に、接続キューの最大長を入力します。これは、保留中の接続用のキューです。この設定は、TCP SYNオーバーロードがサーバーで発生し、その結果多くの新規接続がオープンしたが、保留中のタスクが完了していない場合に便利です。
「1接続当たり複数のリクエストを許可」フィールド(KeepAlive
ディレクティブ)を設定して、複数の接続を許可するかどうかを指定します。複数の接続を許可するように選択する場合は、「接続タイムアウトを許可」フィールドにタイムアウトの秒数を入力します。
「接続タイムアウトを許可」の値により、サーバーが接続をクローズする前に後続のリクエストを待機する時間(秒数)を設定します。リクエストの受信後、指定した値が適用されます。デフォルトは15秒です。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。4.1.4項を参照してください。
接続構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。
子プロセスと構成設定は、サーバーによるリクエスト処理能力に影響します。状況によっては、サーバーの良好なパフォーマンスを維持するために、リクエスト数を増加または減少させるように設定を変更する必要があります。
UNIXの場合、子サーバー・プロセスのデフォルト数は2です。Microsoft Windowsの場合、リクエストを処理するためのスレッドの最大数は250です。
Fusion Middleware Controlを使用してプロセス構成を指定するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
「初期子サーバー・プロセス」フィールド(StartServers
ディレクティブ)に初期子サーバー・プロセス数を入力します。これは、Oracle HTTP Serverの起動時に作成される子サーバー・プロセスの数です。デフォルトは2です。これは、UNIX専用です。
「最大アイドル・スレッド」フィールド(MaxSpareThreads
ディレクティブ)に最大アイドル・スレッド数を入力します。アイドル・スレッドは、稼働しているがリクエストを処理していないプロセスです。
「最小アイドル・スレッド」フィールド(MinSpareThreads
ディレクティブ)に最小アイドル・スレッド数を入力します。
「1子サーバー・プロセス当たりのスレッド数」フィールド(ThreadsPerChild
ディレクティブ)に子サーバー・プロセス当たりのスレッド数を入力します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。4.1.4項を参照してください。
プロセス構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。
デフォルトでは、Oracle HTTP Serverはroot以外のユーザー(Oracle Fusion Middlewareをインストールしたユーザー)として実行されます。このため、UNIXシステムでOracle HTTP Serverを特権ポート(たとえば、ポート80)で実行する場合は、rootとしてOracle HTTP Serverを実行できるようにする必要があります。「特権ポートでのOracle HTTP Serverの起動」を参照してください。
UNIXではセキュリティを強化するために、httpd.conf
構成ファイル内のUser
ディレクティブをnobodyに変更できます。子プロセスがユーザーnobodyとしてタスクを実行できることを確認してください。
PL/SQLアプリケーションがmod_plsqlのファイル・システム・キャッシュ機能を使用している場合は、httpdプロセスにキャッシュ・ディレクトリへの読取りおよび書込み権限を指定する必要があります(このディレクトリは、ORACLE_INSTANCE
/config/OHS/<ohs_name>/mod_plsql/cache.conf
のPlsqlCacheDirectoryパラメータを通じて指定します)。デフォルトでは、このパラメータはORACLE_INSTANCE
/OHS/<ohs_name>
を指します。
最後に、キャッシュ済コンテンツには機密データが含まれている可能性があるため、ファイル・システム・キャッシュのコンテンツはセキュリティで保護する必要があります。したがって、Oracle HTTP Serverがnobodyとして動作する場合でも、このユーザーとしてのシステムへのアクセスは十分に保護する必要があります。