C mod_cgidを使用する場合のCGIDScriptTimeoutの設定

Oracle HTTP Serverには、CGIスクリプトを実行するためにApacheによって提供されるmod_cgiおよびmod_cgidモジュールが含まれます。

UNIXでマルチスレッドMPMを使用する場合は、パフォーマンスを向上させ、複数のスレッドのフォークによるオペレーティング・システムに対する不要な負荷を回避するために、mod_cgiモジュールのかわりにmod_cgidモジュールをロードする必要があります。mod_cgidモジュールには、mod_cgiモジュールと比較してマルチスレッド環境でのシステム・パフォーマンスを向上させるための最適化があります。『Apache Module mod_cgid』を参照してください。

UNIXでマルチスレッドMPMを使用する場合、デフォルトでmod_cgidモジュールがロードされます。構成を確認するには:

  1. Fusion Middleware Controlの「サーバーの詳細構成」ページまたはテキスト・エディタを使用して、httpd.confファイルを開きます。
  2. LoadModuleセクションで、mod_cgidがまだ構成されていない場合は、次の行を追加してmod_cgidモジュールをロードします:
    
    <IfDefine OHS_MPM_EVENT>
        LoadModule cgid_module "${PRODUCT_HOME}/modules/mod_cgid.so"
    </IfDefine>
    
    <IfDefine OHS_MPM_WORKER>
        LoadModule cgid_module "${PRODUCT_HOME}/modules/mod_cgid.so"
    </IfDefine>
    

mod_cgidモジュールは、CGIプログラムからの追加出力を待機する時間の長さを制限するために使用できるCGIDScriptTimeoutディレクティブをサポートしています。

CGIDScriptTimeoutディレクティブ

このディレクティブは、CGIプログラムからの出力を待機する時間の長さを制限します。

この時間を超えると、リクエストとCGIは終了します。これによってサーバーとの通信を停止してCGIスクリプトがリソースを使い果たすことを制限でき、意図しないエラーと悪意のあるアクション(DoS攻撃など)の両方から保護できます。

デフォルトでは、mod_cgidはTimeoutディレクティブを使用してCGI出力を待機する時間の長さを制限します。このタイムアウトは、CGIDScriptTimeoutディレクティブでオーバーライドできます。CGIDScriptTimeoutのデフォルト値(設定されていない場合、または0に設定されている場合)は、Timeoutディレクティブです。CGIDScriptTimeoutを構成するには:

  1. Fusion Middleware Controlの「サーバーの詳細構成」ページまたはテキスト・エディタを使用して、httpd.confファイルを開きます。
  2. CGIDScriptTimeoutディレクティブを構成するために次の行を追加します:
    <IfModule cgid_module> 
    # 
    # CGIDScriptTimeout: Limits the waiting time for output from the CGI program 
    # Replace 20 with the actual timeout value to be set in seconds 
    # 
     CGIDScriptTimeout 20
    </IfModule>
    

ノート:

最適な結果を得るには、アプリケーションでテストを実行する必要があります。タイムアウト値は、CGIプログラムがOHSに出力を返送するために必要な時間に基づいて設定する必要があります。前述の構成では、CGIプログラムからの出力を20秒間待機するようOHSに指示します。