この章では、Oracle HTTP Serverを管理およびモニターする方法について説明します。また、現在の環境でOHSを管理するための手順とツールについても説明します。
この章の内容は、次のとおりです。
次の各項で、Oracle HTTP Serverの処理モデルについて説明します。
Oracle HTTP Serverを起動すると、HTTP(S)リクエストをリスニングしてレスポンスを返す準備ができたことになります。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内のモニター機能により、親プロセスがモニターされます。親プロセスの障害発生が検出されると、残りの子プロセスはすべて停止されます。
Oracle Fusion Middlewareは、Oracle HTTP Serverの実行時パフォーマンスを自動的かつ継続的に測定します。パフォーマンス・メトリックは自動的に有効になるため、メトリックを収集するためにオプションの設定や追加構成の実行は必要ありません。アプリケーションの実行速度が遅い、アプリケーションがハングするなどの問題が発生した場合は、特定のメトリックを表示して、その問題の詳細情報を調べることができます。
Fusion Middleware Controlにはリアルタイム・データが表示されます。履歴データを表示する必要がある場合は、Grid Controlの使用を考慮してください。
この項では、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のパフォーマンス・メトリックを参照できます。
メトリックは、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の「パフォーマンス・サマリー」ページを示しています。
追加のメトリックを選択して、「パフォーマンス・サマリー」に追加します。
コマンド行からインスタンスのメトリックの取得と表示を行うには、接続して、適切なWebLogic Scripting Tool (WLST)コマンドを発行する必要があります。これらのコマンドを使用して、次のような機能のいずれかを実行できます。
メトリック表名の表示
メトリック表の表示
メトリックのダンプ
注意: WLSTの使用方法の詳細は、『WebLogic Scripting Toolの理解』を参照してください。 |
この手順を実行してみる前に、次の内容を実行します。
コマンド行からサーバー・メトリックにアクセスを試みる前に、次の内容を確認してください。
ドメインが存在し、メトリックを表示するインスタンスが存在すること。
インスタンスが実行中であること。
インスタンスのマシン上で実行中であること。
管理サーバーが動作中でも構いませんが、必要条件ではありません。
WLSTを使用してメトリックを表示するには、次の手順を実行します。
注意: 管理対象ドメインとスタンドアロン・ドメインのいずれの種類においても、動作中のものと同一のマシンとリモート・マシンのいずれからコマンドを実行したかによらず、次の手順が機能します。 |
WLSTを起動します。
Linuxの場合:
$ORACLE_HOME/oracle_common/common/bin/wlst.sh
Windowsの場合:
$ORACLE_HOME\oracle_common\common\bin\wlst.cmd
選択したドメイン・ディレクトリ(ORACLE_HOME
/user_projects/domains/
domainName
など)から接続します。
nmConnect('username', 'password', nm_host, nm_port, domainName)
実行するタスクに応じて、次のWLSTコマンドの1つを入力します。
displayMetricTableNames(servers=
['serverName
'], servertype='serverType
')
displayMetricTables(servers=['
serverName'], servertype='
serverType')
dumpMetrics(servers=['
serverName'], servertype='
serverType')
例:
displayMetricTableNames(servers=['ohs1'], servertype='OHS') displayMetricTables(servers=['ohs1'], servertype='OHS') dumpMetrics(servers=['ohs1'], servertype='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です。単一の子プロセスを起動し、次にこれによってリクエストを処理するスレッドが作成される、単一の制御プロセスが使用されます。
Prefork: このMPMは、Apache 1.3と同様の方法でリクエストを処理する、スレッドを使用しないプリフォーク・サーバーを実装します。これは、スレッド・セーフでないライブラリとの互換性のためにスレッドを回避する必要のあるサイトに適しています。またこのMPMは、1つのリクエストに関連する問題が他のリクエストに影響を与えないように、各リクエストを分離する場合に最も適しています。このMPMと一緒にCGIモジュールを実装する場合には、mod_fastcgiのみを使用してください。
この項での説明および推奨は、スレッドを使用するWorker MPMまたはWinNT MPMに基づいています。Prefork MPMを使用している場合、次に示すスレッド関連ディレクティブは適用不可です。
「パフォーマンス・ディレクティブ」ページでは、Oracle HTTP Serverのパフォーマンス関連ディレクティブをチューニングできます(次の図を参照)。
パフォーマンス・ディレクティブの管理は、リクエスト構成、接続構成およびプロセス構成という3つの領域で構成されます。これらの構成は、Fusion Middleware Controlの「パフォーマンス・ディレクティブ」ページを使用して、次の各項に示す手順に従って設定できます。
Fusion Middleware Controlを使用してOracle HTTP Serverのリクエスト構成を指定するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
「最大リクエスト数」フィールド(MaxClients
ディレクティブ)に最大リクエスト数を入力します。この設定により、一度に処理されるリクエストの数が制限されます。デフォルト値(推奨値)は150です。これはすべてのLinux/UNIXプラットフォームに適用可能です。
子プロセス1件当たりの最大リクエスト数フィールド(MaxRequestPerChild
ディレクティブ)で、子プロセス1件当たりの最大リクエスト数を設定します。無制限または最大数を選択できます。無制限を選択した場合には、このフィールドに最大数を入力します。
「リクエスト・タイムアウト(秒)」フィールド(Timeout
ディレクティブ)にリクエスト・タイムアウト値を入力します。この値により、Oracle HTTP ServerがGETリクエストの受信を待機する最大時間(秒単位)、POSTまたはPUTリクエストでTCPパケットを受信する際の間隔時間、および応答時にTCPパケットを転送する際のACKの間隔時間を設定します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。4.3.4項を参照してください。
リクエスト構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。
Fusion Middleware Controlを使用して接続構成を指定するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
「接続キューの最大長」フィールド(ListenBacklog
ディレクティブ)に、接続キューの最大長を入力します。これは、保留中の接続用のキューです。この設定は、TCP SYNオーバーロードがサーバーで発生し、その結果多くの新規接続がオープンしたが、保留中のタスクが完了していない場合に便利です。
「1接続当たり複数のリクエストを許可」フィールド(KeepAlive
ディレクティブ)を設定して、複数の接続を許可するかどうかを指定します。複数の接続を許可するように選択する場合は、「接続タイムアウトを許可」フィールドにタイムアウトの秒数を入力します。
「接続タイムアウトを許可」の値により、サーバーが接続をクローズする前に後続のリクエストを待機する時間(秒数)を設定します。リクエストの受信後、指定した値が適用されます。デフォルトは15秒です。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。4.3.4項を参照してください。
接続構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。
子プロセスと構成設定は、サーバーによるリクエスト処理能力に影響します。状況によっては、サーバーの良好なパフォーマンスを維持するために、リクエスト数を増加または減少させるように設定を変更する必要があります。
UNIXの場合、子サーバー・プロセスのデフォルト数は2です。Microsoft Windowsの場合、リクエストを処理するためのスレッドのデフォルト数は150です。
Fusion Middleware Controlを使用してプロセス構成を指定するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
「初期子サーバー・プロセス」フィールド(StartServers
ディレクティブ)に初期子サーバー・プロセス数を入力します。これは、Oracle HTTP Serverの起動時に作成される子サーバー・プロセスの数です。デフォルトは2です。これは、UNIX専用です。
「最大アイドル・スレッド」フィールド(MaxSpareThreads
ディレクティブ)に最大アイドル・スレッド数を入力します。アイドル・スレッドは、稼働しているがリクエストを処理していないプロセスです。
「最小アイドル・スレッド」フィールド(MinSpareThreads
ディレクティブ)に最小アイドル・スレッド数を入力します。
「1子サーバー・プロセス当たりのスレッド数」フィールド(ThreadsPerChild
ディレクティブ)に子サーバー・プロセス当たりのスレッド数を入力します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。4.3.4項「Oracle HTTP Serverインスタンスの再起動」を参照してください。
プロセス構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。
デフォルトでは、Oracle HTTP Serverは、UNIXでの予約済の範囲内にあるポート(通常1024未満)にバインドできません。Oracle HTTP Serverが、UNIXでの予約済の範囲内にあるポート(ポート80とポート443など)でリスニングできるようにするには、4.3.2.4項「特権ポートでのOracle HTTP Serverインスタンスの起動(UNIXのみ)」を参照してください。
PL/SQLアプリケーションがmod_plsqlのファイル・システム・キャッシュ機能を使用している場合は、Oracle HTTPサーバーにキャッシュ・ディレクトリへの読取りおよび書込み権限を指定する必要があります(このディレクトリは、DOMAIN_HOME
/config/fmwconfig/components/OHS/componentName/mod_plsql/cache.confのPlsqlCacheDirectoryパラメータを通じて指定します)。デフォルトでは、このパラメータはDOMAIN_HOME/servers/componentNameを指します。
最後に、キャッシュ済コンテンツには機密データが含まれている可能性があるため、ファイル・システム・キャッシュのコンテンツはセキュリティで保護する必要があります。そのため、このユーザーとしてのシステムへのアクセスは適切に保護される必要があります。