7 サーバー・プロセスの管理およびモニタリング

Oracle HTTP Serverのパフォーマンスを管理およびモニタリングするために役立つツールおよび手順があります。

この章の内容は次のとおりです。この項では、現在の環境でサーバーを管理する手順とツールについて説明します。

Oracle HTTP Serverの処理モデル

Oracle HTTP Serverのモニタリングに役立つ処理モデルには、リクエスト処理モデルと単一ユニットの処理モデルの2つのタイプがあります。

次の各項で、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パフォーマンス・メトリック

この項では、Oracle HTTP Serverのパフォーマンス分析に役立つ、最もよく使用されるメトリックを示します。

Oracle HTTP Serverのメトリック

Oracle HTTP Server Metricsフォルダには、Oracle HTTP Serverのパフォーマンス・メトリック・オプションが含まれます。次の表に、Oracle HTTP Server Metricsフォルダに含まれるメトリックを示します。

要素 説明

CPU使用率

CPU使用率とアイドル時間

メモリー使用量

メモリー使用量と空きメモリー(MB単位)

プロセス

ビジーおよびアイドル・プロセス・メトリック

リクエスト・スループット

リクエスト/秒単位で測定されたリクエスト・スループット

リクエスト処理時間

リクエスト処理時間(秒単位)

レスポンス・データ・スループット

レスポンス・データ・スループット(KB/秒単位)

レスポンス・データ処理

レスポンス・データ処理(KB/レスポンス単位)

アクティブなHTTP接続

アクティブなHTTP接続の数

接続期間

接続時間の長さ

HTTPエラー

HTTP 4xxおよび5xxエラーの数

Oracle HTTP Server仮想ホスト・メトリック

Oracle HTTP Server Virtual Host Metricsフォルダには、仮想ホスト(アクセス・ポイントとも呼ばれる)のパフォーマンス・メトリック・オプションが含まれます。次の表に、Oracle HTTP Server Virtual Host Metricsフォルダに含まれるメトリックを示します。

要素 説明

仮想ホストに対するリクエスト・スループット

各仮想ホストに対する1秒当たりのリクエストの数

仮想ホストに対するリクエスト処理時間

各仮想ホストで1つのリクエストを処理する時間

仮想ホストに対するレスポンス・データ・スループット

各仮想ホストで送信されたデータの量

仮想ホストに対して処理されたレスポンス・データ

各仮想ホストで処理されたデータの量

Oracle HTTP Serverモジュールのメトリック

Oracle HTTP Server Module Metricsフォルダには、モジュールのパフォーマンス・メトリック・オプションが含まれます。次の表に、Oracle HTTP Server Module Metricsフォルダに含まれるメトリックを示します。

要素 説明

リクエスト・ハンドリング・スループット

モジュールのリクエスト・ハンドリング・スループット(リクエスト/秒単位)

リクエスト・ハンドリング時間

モジュールのリクエスト・ハンドリング時間(秒単位)

モジュール・メトリック

モジュールと、各モジュールのアクティブ・リクエスト、スループットおよび時間

パフォーマンス・メトリックの表示

Oracle HTTP ServerおよびOracle WebLogic Serverプロキシ・プラグイン・モジュールのパフォーマンス・メトリックは、Fusion Middleware Controlを使用するか、適切なWLSTコマンドを発行して表示できます。サーバーのパフォーマンスをモニタリングおよび分析するには、パフォーマンス・メトリックを表示します。

次のいずれかの手順を使用して、Oracle HTTP ServerおよびOracle WebLogic Serverプロキシ・プラグイン・モジュールのパフォーマンス・メトリックを参照できます。

Fusion Middleware Controlを使用したサーバー・メトリックの表示

メトリックは、Fusion Middleware ControlのOracle HTTP Serverホーム・メニューから表示できます。

  1. モニター対象のOracle HTTP Serverを選択します。
  2. Oracle HTTP Serverのホーム・ページの「Oracle HTTP Server」メニューから「モニタリング中」を選択し、「パフォーマンス・サマリー」を選択します。

    「パフォーマンス・サマリー」ページが表示されます。このページに、パフォーマンス・メトリックと、Oracle HTTP Serverインスタンスのレスポンス時間およびリクエスト処理時間に関する情報が表示されます。

  3. その他のメトリックを表示するには、「メトリック・パレットの表示」をクリックし、メトリックのカテゴリを開きます。

    ヒント:

    Oracle HTTP Serverホーム・メニューからは、Oracle HTTP Serverのポート使用状況情報も利用できます。

  4. 追加のメトリックを選択して、「パフォーマンス・サマリー」に追加します。
WLSTを使用したサーバー・メトリックの表示

コマンド行からインスタンスのメトリックの取得と表示を行うには、接続して、適切なWLSTコマンドを発行する必要があります。これらのコマンドを使用して、次のような機能のいずれかを実行できます。

  • メトリック表名の表示

  • メトリック表の表示

  • メトリックのダンプ

ノート:

WLSTの使用方法の詳細は、『WebLogic Scripting Toolの理解』を参照してください。

この手順を実行してみる前に、次の内容を実行します。

コマンド行からサーバー・メトリックにアクセスを試みる前に、次の内容を確認してください。

  • ドメインが存在し、メトリックを表示するインスタンスが存在すること。

  • インスタンスが実行中であること。

  • インスタンスのマシン上でノード・マネージャが実行中であること。

管理サーバーが動作中でも構いませんが、必要条件ではありません。

WLSTを使用してメトリックを表示するには:

ノート:

管理対象ドメインとスタンドアロン・ドメインのいずれの種類においても、同一のマシンまたはサーバーに対してリモートのマシンのいずれからコマンドを実行したかによらず、次の手順が機能します。

  1. WLSTを起動します。

    LinuxまたはUNIXの場合:

    $ORACLE_HOME/oracle_common/common/bin/wlst.sh
    

    Windowsの場合:

    $ORACLE_HOME\oracle_common\common\bin\wlst.cmd
    
  2. 選択したドメイン・ディレクトリ(ORACLE_HOME/user_projects/domains/domainNameなど)からインスタンスに接続します。
    nmConnect('username', 'password', nm_host, nm_port, domainName)
    
  3. 実行するタスクに応じて、次の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のパフォーマンスは、構成ファイルで指定されたディレクティブによって管理されます。Oracle HTTP Serverのパフォーマンス関連のディレクティブをチューニングするには、Fusion Middleware Controlを使用します。

次の項では、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を参照してください。

    http://httpd.apache.org/docs/2.4/mod/mod_cgid.html

  • 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タイプの値を変更する方法について説明します

スタンドアロン・ドメインのMPMタイプの値の変更

スタンドアロン・ドメインのOracle HTTP Serverインスタンス用のMPMタイプの値を変更するには、次のステップに従います。

  1. ${ORACLE_INSTANCE}/config/fmwconfig/components/OHS/${COMPONENT_NAME}にある、ohs.plugins.nodemanager.propertiesファイルに移動します。
  2. ohs.plugins.nodemanager.propertiesファイルを編集して、次の変更を加えます。

    非コメント行のキーmpmを探します。

    • 非コメント行のキーを見つけたら、既存のmpmの値をMPMに設定する値に置き換えます。

    • 非コメント行で見つからなかった場合、次の形式を使用して新しい行をファイルに追加します。

      mpm = mpm_value
      

      ここで、mpm_valueはMPMとして設定する値です。

  3. Oracle HTTP Serverインスタンスを起動または再起動します。
WebLogic Server管理対象ドメインのMPMタイプの値の変更

Oracle WebLogic ServerドメインのOracle HTTP Serverインスタンス用のMPMタイプの値を変更するには、次のステップに従います。

ノート:

次のステップでは、ドメインの管理サーバーおよびノード・マネージャがすでに稼働していると仮定します。

  1. コマンド行からWLSTを起動します。

    LinuxまたはUNIX: $ORACLE_HOME/oracle_common/common/bin/wlst.sh

  2. 管理サーバー・インスタンスに接続します。
    connect('<userName', '<password>', '<host>:<port>')
    
  3. MPMタイプの値キーを含むMbeanに移動します。

    editCustom()コマンドは、WLSTが管理サーバーに接続されている場合にのみ入力できます。cdを使用して管理オブジェクトの階層をナビゲートします。この例では、ohs1という名前のOracle HTTP Serverインスタンスを想定します。

    editCustom()
    cd('oracle.ohs')
    cd('oracle.ohs:type=OHSInstance.NMProp,OHSInstance=ohs1,component=OHS')
     
  4. MPMタイプの値キーを設定します。

    編集セッションを開始し、MPMタイプの値キーMpmをそのタイプ値に設定します。この例では、タイプ値がeventに設定されています。

    startEdit()
    set('Mpm','event') 
    save()
    activate()

Fusion Middleware Controlを使用したパフォーマンス・ディレクティブの構成

この項での説明および推奨は、スレッドを使用するWorker MPM、Event MPMまたはWinNT MPMに基づいています。Prefork MPMを使用している場合、次に示すスレッド関連ディレクティブは適用不可です。

Fusion Middleware Controlの「パフォーマンス・ディレクティブ」ページでは、Oracle HTTP Serverのパフォーマンス関連ディレクティブをチューニングできます。

パフォーマンス・ディレクティブの管理は、リクエスト構成、接続構成およびプロセス構成という領域で構成されます。次の各項では、これらの構成を設定する方法について説明します。

Fusion Middleware Controlを使用したリクエスト構成の設定

Fusion Middleware Controlを使用してOracle HTTP Serverのリクエスト構成を指定するには、次の手順を実行します。

  1. 「Oracle HTTP Server」メニューから「管理」を選択します。
  2. 「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
  3. 「最大リクエスト数」フィールド(MaxRequestWorkersディレクティブ)に最大リクエスト数を入力します。

    この設定により、一度に処理されるリクエストの数が制限されます。デフォルト値は400です。これはすべてのLinux/UNIXプラットフォームに適用可能です。

  4. 子プロセス1件当たりの最大リクエスト数フィールド(MaxConnectionsPerChildディレクティブ)で、子プロセス1件当たりの最大リクエスト数を設定します。

    無制限とするか、または最大数を設定できます。制限する場合、フィールドに最大数を入力します。

  5. 「リクエスト・タイムアウト(秒)」フィールド(Timeoutディレクティブ)にリクエスト・タイムアウト値を入力します。

    この値により、Oracle HTTP ServerがGETリクエストの受信を待機する最大時間(秒単位)、POSTまたはPUTリクエストでTCPパケットを受信する際の間隔時間、および応答時にTCPパケットを転送する際のACKの間隔時間を設定します。

  6. 設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
  7. Oracle HTTP Serverを再起動します。Oracle HTTP Serverインスタンスの再起動を参照してください。

リクエスト構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。

Fusion Middleware Controlを使用した接続構成の設定

Fusion Middleware Controlを使用して接続構成を指定するには、次の手順を実行します。

  1. 「Oracle HTTP Server」メニューから「管理」を選択します。
  2. 「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
  3. 「接続キューの最大長」フィールド(ListenBacklogディレクティブ)に、接続キューの最大長を入力します。

    これは、保留中の接続用のキューです。この設定は、TCP SYNオーバーロードがサーバーで発生し、その結果多くの新規接続がオープンしたが、保留中のタスクが完了していない場合に便利です。

  4. 「1接続当たり複数のリクエストを許可」フィールド(KeepAliveディレクティブ)を設定して、複数の接続を許可するかどうかを指定します。複数の接続を許可するように選択する場合は、「接続タイムアウトを許可」フィールドにタイムアウトの秒数を入力します。

    「接続タイムアウトを許可」の値により、サーバーが接続をクローズする前に後続のリクエストを待機する時間(秒数)を設定します。リクエストの受信後、指定した値が適用されます。デフォルトは5秒です。

  5. 設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
  6. Oracle HTTP Serverを再起動します。Oracle HTTP Serverインスタンスの再起動を参照してください。

接続構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。

Fusion Middleware Controlを使用したプロセス構成の設定

子プロセスと構成設定は、サーバーによるリクエスト処理能力に影響します。状況によっては、サーバーの良好なパフォーマンスを維持するために、リクエスト数を増加または減少させるように設定を変更する必要があります。

UNIXの場合、子サーバー・プロセスのデフォルト数は3です。Microsoft Windowsの場合、リクエストを処理するためのスレッドのデフォルト数は150です。

Fusion Middleware Controlを使用してプロセス構成を指定するには、次の手順を実行します。

  1. 「Oracle HTTP Server」メニューから「管理」を選択します。
  2. 「管理」メニューから「パフォーマンス・ディレクティブ」を選択します。「パフォーマンス・ディレクティブ」ページが表示されます。
  3. 「初期子サーバー・プロセス」フィールド(StartServersディレクティブ)に初期子サーバー・プロセス数を入力します。

    これは、Oracle HTTP Serverの起動時に作成される子サーバー・プロセスの数です。デフォルトは3です。これは、UNIX専用です。

  4. 「最大アイドル・スレッド」フィールド(MaxSpareThreadsディレクティブ)に最大アイドル・スレッド数を入力します。

    アイドル・スレッドは、稼働しているがリクエストを処理していないプロセスです。

  5. 「最小アイドル・スレッド」フィールド(MinSpareThreadsディレクティブ)に最小アイドル・スレッド数を入力します。
  6. 「1子サーバー・プロセス当たりのスレッド数」フィールド(ThreadsPerChildディレクティブ)に子サーバー・プロセス当たりのスレッド数を入力します。
  7. 設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
  8. Oracle HTTP Serverを再起動します。Oracle HTTP Serverインスタンスの再起動を参照してください。

プロセス構成設定が保存され、「パフォーマンス・ディレクティブ」ページに表示されます。

UNIXのプロセス・セキュリティの理解

UNIXにインストールするときに、Oracle HTTP Serverを特権ポートにバインドできるようにするには、特別な構成が必要です。

デフォルトでは、Oracle HTTP Serverは、UNIXでの予約済の範囲内にあるポート(通常1024未満)にバインドできません。Oracle HTTP Serverが、UNIXでの予約済の範囲内にあるポート(ポート80とポート443など)でリスニングできるようにするには、特権ポートでのOracle HTTP Serverインスタンスの起動(UNIXのみ)を参照してください。