この章では、Oracle HTTP Serverを管理およびモニターする方法について説明します。また、現在の環境でサーバーを管理するための手順とツールについても説明します。
この章の内容は、次のとおりです。
次の各項で、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およびOracle WebLogic Serverプロキシ・プラグイン・モジュールの実行時パフォーマンスを自動的かつ継続的に測定します。パフォーマンス・メトリックは自動的に有効になるため、メトリックを収集するためにオプションの設定や追加構成の実行は必要ありません。アプリケーションの実行速度が遅い、アプリケーションがハングするなどの問題が発生した場合は、特定のメトリックを表示して、その問題の詳細情報を調べることができます。
Fusion Middleware Controlにはリアルタイム・データが表示されます。履歴データを表示する必要がある場合は、Cloud 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およびOracle WebLogic 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の「パフォーマンス・サマリー」ページを示しています。
追加のメトリックを選択して、「パフォーマンス・サマリー」に追加します。
コマンド行からインスタンスのメトリックの取得と表示を行うには、接続して、適切なWLSTコマンドを発行する必要があります。これらのコマンドを使用して、次のような機能のいずれかを実行できます。
メトリック表名の表示
メトリック表の表示
メトリックのダンプ
注意: WLSTの使用方法の詳細は、『WebLogic Scripting Toolの理解』を参照してください。 |
この手順を実行してみる前に、次の内容を実行します。
コマンド行からサーバー・メトリックにアクセスを試みる前に、次の内容を確認してください。
ドメインが存在し、メトリックを表示するインスタンスが存在すること。
インスタンスが実行中であること。
インスタンスのマシン上でノード・マネージャが実行中であること。
管理サーバーが動作中でも構いませんが、必要条件ではありません。
WLSTを使用してメトリックを表示するには、次の手順を実行します。
注意: 管理対象ドメインとスタンドアロン・ドメインのいずれの種類においても、同一のマシンまたはサーバーに対してリモートのマシンのいずれからコマンドを実行したかによらず、次の手順が機能します。 |
WLSTを起動します。
LinuxまたはUNIXの場合:
$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のパフォーマンス・ディレクティブについて説明します。
Oracle HTTP Serverでは、httpd.confおよび他の構成ファイルで宣言されたディレクティブが使用されます。この構成ファイルは、同時に処理できるHTTPリクエストの最大数、ロギングの詳細、および特定の制限やタイムアウトを指定するものです。Oracle HTTP Serverでは次のMulti-Processing Module (MPM)をサポートし、またこれらが付属しています。これらのモジュールは、マシン上のネットワーク・ポートへのバインド、リクエストの受入れ、およびリクエストを処理するための子のディスパッチを行います。
Worker: これはUNIX (Linux以外)環境のOracle HTTP Serverに対するデフォルトのMPMです。このMPMは、マルチプロセスでマルチスレッドのハイブリッド・サーバーを実装します。このサーバーは、リクエストの処理にスレッドを使用することで、プロセスベースのサーバーよりも少ないシステム・リソースで多数のリクエストを処理できます。しかし、このサーバーは、それぞれが多数のスレッドを持つ複数のプロセスを常に使用可能にしておくため、安定性はプロセスベースのサーバーとほとんど変わりません。Worker MPMを使用している場合、CGIアプリケーション用にmod_cgiではなくmod_cgidモジュールを構成する必要があります。詳細は、次のURLを参照してください。
WinNT: これはWindowsプラットフォーム上のOracle HTTP Serverに対するデフォルトのMPMです。単一の子プロセスを起動し、次にこれによってリクエストを処理するスレッドが作成される、単一の制御プロセスが使用されます。
Prefork: このMPMは、Apache 1.3と同様の方法でリクエストを処理する、スレッドを使用しないプリフォーク・サーバーを実装します。これは、スレッド・セーフでないライブラリとの互換性のためにスレッドを回避する必要のあるサイトに適しています。またこのMPMは、1つのリクエストに関連する問題が他のリクエストに影響を与えないように、各リクエストを分離する場合に最も適しています。このMPMと一緒にCGIモジュールを実装する場合には、mod_fastcgiのみを使用してください。
Event: これはLinux環境のOracle HTTP Serverに対するデフォルトのMPMです。このMPMは、一部の処理をサポートしているスレッドに渡し、新しいリクエストを処理するメイン・スレッドを解放することで、より多くのリクエストを同時に処理できるように設計されています。これはハイブリッド・マルチプロセス、マルチスレッド・サーバーを実装するWorker MPMに基づきます。ランタイム構成ディレクティブはWorkerにより提供されるものと同じです。
次の項では、スタンドアロンおよびOracle WebLogic ServerドメインのOracle HTTP Serverインスタンス用のMPMタイプの値を変更する方法について説明します
スタンドアロン・ドメインのOracle HTTP Serverインスタンス用のMPMタイプの値を変更するには、次の手順に従います。
${
ORACLE_INSTANCE
}/config/fmwconfig/components/OHS/${
COMPONENT_NAME
}
にある、ohs.plugins.nodemanager.properties
ファイルに移動します。
ohs.plugins.nodemanager.properties
ファイルを編集して、次の変更を加えます。
非コメント行のキーmpm
を探します。
非コメント行のキーを見つけたら、既存のmpm
の値をMPMに設定する値に置き換えます。
非コメント行で見つからなかった場合、次の形式を使用して新しい行をファイルに追加します。
mpm = mpm_value
ここで、mpm_value
はMPMとして設定する値です。
Oracle HTTP Serverインスタンスを起動または再起動します。
Oracle WebLogic ServerドメインのOracle HTTP Serverインスタンス用のMPMタイプの値を変更するには、次の手順に従います。
注意: 次の手順では、ドメインの管理サーバーおよびノード・マネージャがすでに実行していると仮定します。 |
コマンド行からWLSTを起動します。
LinuxまたはUNIX: $
ORACLE_HOME
/oracle_common/common/bin/wlst.sh
管理サーバー・インスタンスに接続します。
connect('<userName', '<password>', '<host>:<port>')
MPMタイプの値キーを含むMbeanに移動します。
editCustom()
コマンドは、WLSTが管理サーバーに接続されている場合にのみ入力できます。cd
を使用して管理オブジェクトの階層をナビゲートします。この例では、ohs1
という名前のOracle HTTP Serverインスタンスを想定します。
editCustom() cd('oracle.ohs') cd('oracle.ohs:type=OHSInstance.NMProp,OHSInstance=ohs1,component=OHS')
MPMタイプの値キーを設定します。
編集セッションを開始し、MPMタイプの値キーMpm
をそのタイプ値に設定します。この例では、タイプ値がevent
に設定されています。
startEdit() set('Mpm','event') save() activate()
この項での説明および推奨は、スレッドを使用するWorker MPM、Event MPMまたはWinNT MPMに基づいています。Prefork MPMを使用している場合、次に示すスレッド関連ディレクティブは適用不可です。
次の図に示すFusion Middleware Controlの「パフォーマンス・ディレクティブ」ページでは、Oracle HTTP Serverのパフォーマンス関連ディレクティブをチューニングできます。
パフォーマンス・ディレクティブの管理は、リクエスト構成、接続構成およびプロセス構成という領域で構成されます。次の各項では、これらの構成を設定する方法について説明します。
Fusion Middleware Controlを使用してOracle HTTP Serverのリクエスト構成を指定するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
「最大リクエスト数」フィールド(MaxRequestWorkers
ディレクティブ)に最大リクエスト数を入力します。
この設定により、一度に処理されるリクエストの数が制限されます。デフォルト値は400です。これはすべてのLinux/UNIXプラットフォームに適用可能です。
子プロセス1件当たりの最大リクエスト数フィールド(MaxConnectionsPerChild
ディレクティブ)で、子プロセス1件当たりの最大リクエスト数を設定します。
無制限とするか、または最大数を設定できます。制限する場合、フィールドに最大数を入力します。
「リクエスト・タイムアウト(秒)」フィールド(Timeout
ディレクティブ)にリクエスト・タイムアウト値を入力します。
この値により、Oracle HTTP ServerがGETリクエストの受信を待機する最大時間(秒単位)、POSTまたはPUTリクエストでTCPパケットを受信する際の間隔時間、および応答時にTCPパケットを転送する際のACKの間隔時間を設定します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。詳細は、4.3.5項「Oracle HTTP Serverインスタンスの再起動」を参照してください。
リクエスト構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。
Fusion Middleware Controlを使用して接続構成を指定するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
「接続キューの最大長」フィールド(ListenBacklog
ディレクティブ)に、接続キューの最大長を入力します。
これは、保留中の接続用のキューです。この設定は、TCP SYNオーバーロードがサーバーで発生し、その結果多くの新規接続がオープンしたが、保留中のタスクが完了していない場合に便利です。
「1接続当たり複数のリクエストを許可」フィールド(KeepAlive
ディレクティブ)を設定して、複数の接続を許可するかどうかを指定します。複数の接続を許可するように選択する場合は、「接続タイムアウトを許可」フィールドにタイムアウトの秒数を入力します。
「接続タイムアウトを許可」の値により、サーバーが接続をクローズする前に後続のリクエストを待機する時間(秒数)を設定します。リクエストの受信後、指定した値が適用されます。デフォルトは5秒です。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。詳細は、4.3.5項「Oracle HTTP Serverインスタンスの再起動」を参照してください。
接続構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。
子プロセスと構成設定は、サーバーによるリクエスト処理能力に影響します。状況によっては、サーバーの良好なパフォーマンスを維持するために、リクエスト数を増加または減少させるように設定を変更する必要があります。
UNIXの場合、子サーバー・プロセスのデフォルト数は3です。Microsoft Windowsの場合、リクエストを処理するためのスレッドのデフォルト数は150です。
Fusion Middleware Controlを使用してプロセス構成を指定するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
「初期子サーバー・プロセス」フィールド(StartServers
ディレクティブ)に初期子サーバー・プロセス数を入力します。
これは、Oracle HTTP Serverの起動時に作成される子サーバー・プロセスの数です。デフォルトは3です。これは、UNIX専用です。
「最大アイドル・スレッド」フィールド(MaxSpareThreads
ディレクティブ)に最大アイドル・スレッド数を入力します。
アイドル・スレッドは、稼働しているがリクエストを処理していないプロセスです。
「最小アイドル・スレッド」フィールド(MinSpareThreads
ディレクティブ)に最小アイドル・スレッド数を入力します。
「1子サーバー・プロセス当たりのスレッド数」フィールド(ThreadsPerChild
ディレクティブ)に子サーバー・プロセス当たりのスレッド数を入力します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。詳細は、4.3.5項「Oracle HTTP Serverインスタンスの再起動」を参照してください。
プロセス構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。
デフォルトでは、Oracle HTTP Serverは、UNIXでの予約済の範囲内にあるポート(通常1024未満)にバインドできません。Oracle HTTP Serverが、UNIXでの予約済の範囲内にあるポート(ポート80とポート443など)でリスニングできるようにするには、4.3.3.4項「特権ポートでのOracle HTTP Serverインスタンスの起動(UNIXのみ)」を参照してください。