ASP の制限: <limits>

概要

<asp> 要素の <limits> 要素は、インターネット インフォメーション サービス (IIS) 7 に対する Active Server Pages (ASP) での次の接続とキューの制限を指定します。

  • bufferingLimit 属性は、ASP バッファーの最大サイズを設定します。 応答バッファリングがオンになっている場合、この属性は、フラッシュが発生するまでに ASP ページが応答バッファーに書き込むことができる最大バイト数を制御します。

  • maxRequestEntityAllowed 属性は、ASP 要求のエンティティ本体で許可される最大バイト数を指定します。 Content-Length ヘッダーが存在し、そこで maxRequestEntityAllowed の値より多いデータ量が指定されている場合、IIS は HTTP 403 エラー応答を返します。

  • processorThreadMax 属性は、IIS が作成できるワーカー スレッドのプロセッサあたりの最大数を指定します。

    Note

    この設定は、一般に、Web アプリケーションのスケーラビリティとサーバーのパフォーマンスに大きく影響する可能性があります。 この属性では同時に実行できる ASP 要求の最大数が定義されるため、ASP アプリケーションが外部コンポーネントの広範な呼び出しを行っていない限り、この設定は既定値のままにする必要があります。

  • queueConnectionTestTime 属性は、クライアントがまだ接続されているかどうかを ASP が判断するまで、要求をキューに入れておくことができる秒数を指定します。 queueConnectionTestTime 属性で指定されている秒数より長く要求がキューに残っている場合、ASP は要求を実行する前にクライアントがまだ接続されているかどうかをチェックします。 クライアントが接続されなくなった場合、要求は処理されず、キューから削除されます。

    Note

    ほとんどの場合、ユーザーは ASP ページの処理を数秒以上待ちません。 最大待機時間はユーザーによって異なりますが、一般的に許容される最大値は約 10 秒です。 queueConnectionTestTime 属性を使うと、ユーザーが中止した要求の処理に、IIS が時間を無駄にしないようにすることができます。 この属性は、ASP がスクリプトの処理を開始する時点までの間だけ、ASP の処理を効率的にするのに役立ちます。 一方、スクリプトがいったん実行されたら、アプリケーションで ASP 組み込みの Response オブジェクトの IsClientConnected メソッドを使って、適切なタイミングでクライアントの接続を確認し続ける必要があります。

  • queueTimeout 属性は、ASP スクリプト要求がキュー内で待機できる時間 (秒単位) を指定します。 要求は、キューからプルされる時点で、有効期限が切れている (このパラメーターの値より長く待機した) かどうかがチェックされます。 期限切れの要求は、サーバーがビジー状態であることを示すメッセージで拒否されます。

  • requestQueueMax 属性は、キューに同時に保持できる ASP 要求の最大数を指定します。 キューがいっぱいのときに ASP ファイルを要求しようとしたクライアント ブラウザーには、HTTP 500 Server Too Busy エラーが送信されます。

  • scriptTimeout 属性は、ASP ページがスクリプトを終了して Windows イベント ログにイベントを書き込むまで、スクリプトが実行できる既定の時間 (秒単位) を指定します。 ASP スクリプトでは、ASP 組み込みの Session オブジェクトの ScriptTimeout プロパティを使って、この値をオーバーライドできます。 ScriptTimeout プロパティを使うと、ASP アプリケーションでスクリプトのタイムアウト値をさらに長く設定できます。 たとえば、特定のユーザーが製品のログインまたは注文を行って有効なセッションを確立したら、この設定を使ってタイムアウトを調整できます。

互換性

バージョン メモ
IIS 10.0 <limits> 要素は、IIS 10.0 では変更されませんでした。
IIS 8.5 <limits> 要素は、IIS 8.5 では変更されませんでした。
IIS 8.0 <limits> 要素は、IIS 8.0 では変更されませんでした。
IIS 7.5 <limits> 要素は、IIS 7.5 では変更されませんでした。
IIS 7.0 <asp> 要素の <limits> 要素は IIS 7.0 で導入されました。
IIS 6.0 <limits> 要素は、次の IIS 6.0 メタベース プロパティを置き換えます。
  • AspBufferingLimit
  • AspMaxRequestEntityAllowed
  • AspProcessorThreadMax
  • AspQueueConnectionTestTime
  • AspQueueTimeout
  • AspRequestQueueMax
  • AspScriptTimeout

段取り

Web サーバーで ASP アプリケーションをサポートおよび構成するには、ASP モジュールをインストールする必要があります。 ASP モジュールをインストールするには、次の手順のようにします。

Windows Server 2012 または Windows Server 2012 R2

  1. タスク バーで [サーバー マネージャー]をクリックします。
  2. [サーバー マネージャー] で、[管理] メニューをクリックし、[役割と機能の追加] をクリックします。 - 役割と機能の追加ウィザードで、[次へ] をクリックします。 インストールの種類を選択し、[次へ] をクリックします。 対象サーバーを選択し、[次へ] をクリックします。
  3. [サーバーの役割] ページで、[Web サーバー (IIS)][Web サーバー][アプリケーション開発] の順に展開して、[ASP] を選びます。
    Screenshot of A S P selected under Application development in an expanded Web Server (I I S) list.
  4. [ASP に必要な機能を追加しますか?] ダイアログ ボックスが表示されたら、[機能の追加] をクリックします。 (このページは、ISAPI 拡張機能の役割サービスをサーバーにまだインストールしていない場合にのみ表示されます)。
  5. [サーバーの役割] ページで、[次へ] をクリックします。
  6. [機能の選択] ページで、[次へ] をクリックします。
  7. [インストール オプションの確認] ページで、[インストール] をクリックします。
  8. [結果] ページで、 [閉じる]をクリックします。

Windows 8 または Windows 8.1

  1. [スタート] 画面で、ポインターを左下隅まで移動し、[スタート] ボタンを右クリックし、[コントロール パネル] を選択します。

  2. [コントロール パネル][プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。

  3. [インターネット インフォメーション サービス][World Wide Web サービス][アプリケーション開発機能] の順に展開して、[ASP] を選択します。
    Screenshot of A S P selected in a Windows 8 interface.

    Note

    ISAPI 拡張機能の役割がまだインストールされていない場合、それが選択されます。

  4. OK をクリックします。

  5. 閉じるをクリックします。

Windows Server 2008 または Windows Server 2008 R2

  1. タスク バーで [スタート] をクリックし、[管理ツール] をポイントして、[サーバー マネージャー] をクリックします。
  2. [サーバー マネージャー] 階層ウィンドウで [役割] を展開し、[Web サーバー (IIS)] をクリックします。
  3. [Web サーバー (IIS)] ウィンドウで、[役割サービス] セクションまでスクロールし、[役割サービスの追加] をクリックします。
  4. 役割サービスの追加ウィザード[役割サービスの選択] ページで、[ASP] を選択します。
    Screenshot of A S P selected under Application development in the Add Role Services Wizard.
  5. [ASP で必要な役割サービスの追加] ダイアログ ボックスが表示されたら、[必要な役割サービスの追加] をクリックします。 (このページは、ISAPI 拡張機能の役割サービスをサーバーにまだインストールしていない場合にのみ表示されます)。
    Screenshot of the Add Role Services dialog with the Add Required Role Services button emphasized.
  6. [役割サービスの選択] ページで、[次へ] をクリックします。
  7. [インストール オプションの確認] ページで、[インストール] をクリックします。
  8. [結果] ページで、 [閉じる]をクリックします。

Windows Vista または Windows 7

  1. タスク バーで、[スタート][コントロール パネル] の順にクリックします。
  2. [コントロール パネル][プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。
  3. [インターネット インフォメーション サービス][World Wide Web サービス][アプリケーション開発機能] の順に展開します。
  4. [ASP] を選択して、[OK] をクリックします。
    Screenshot of A S P selected in a Windows Vista or Windows 7 interface.

操作方法

サーバーの ASP キャッシュ設定を構成する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスクバーの [スタート] をクリックし、[管理ツール] をポイントして、[インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、サーバーの名前を強調表示します。

  3. サーバーの [ホーム] ウィンドウで、[ASP] をダブルクリックします。
    Screenshot of the SERVER Home pane with A S P selected.

  4. [ASP] ウィンドウで、[制限のプロパティ] セクションを展開し、目的の設定を構成してから、[操作] ウィンドウで [適用] クリックします。
    Screenshot of the A S P pane with the Limits Properties section expanded.

構成

属性

属性 説明
bufferingLimit 省略可能な uint 属性。

ASP バッファーの最大サイズ (バイト単位) を指定します。 応答バッファリングがオンになっている場合、この属性は、フラッシュが発生するまでに ASP ページが応答バッファーに書き込むことができる最大バイト数を制御します。 この値は、0 から 2147483647 の範囲の整数です。

既定値は 4194304 です。
maxRequestEntityAllowed 省略可能な uint 属性。

ASP 要求の本文全体で許可される最大バイト数を指定します。 この値は、0 から 2147483647 の範囲の整数です。

既定値は 200000 です。
processorThreadMax 省略可能な uint 属性。

ASP が作成できる 1 プロセッサあたりの最大ワーカー スレッド数を指定します。

既定値は 25 です。
queueConnectionTestTime 省略可能な timeSpan 属性。

要求を実行する前にクライアントがまだ接続されているかどうかのチェックを ASP が始めるまでの時間間隔 (hh:mm:ss) を指定します。 クライアントが接続されなくなった場合、要求は処理されず、キューから削除されます。

既定値は 00:00:03 です。
queueTimeout 省略可能な timeSpan 属性。

ASP 要求が要求キューで待機できる最大時間 (hh:mm:ss) を指定します。

既定値は 00:00:00 です。
requestQueueMax 省略可能な uint 属性。

要求キューに同時に存在できる ASP 要求の最大数を指定します。

既定値は 3000 です。
scriptTimeout 省略可能な timeSpan 属性。

ASP ページがスクリプトを終了して Windows イベント ログにイベントを書き込むまで、スクリプトが実行できる最大時間 (hh:mm:ss) を指定します。

既定値は 00:01:30 です。

子要素

なし。

構成サンプル

次の構成サンプルは、ASP スクリプトのタイムアウトを 2 分に設定し、要求の実行前にクライアントがまだ接続されているかどうかを ASP がチェックするようになるまでの時間を 5 秒に設定し、要求キュー内の同時 ASP 要求の最大数を 1,000 に設定します。

<configuration>
   <system.webServer>
      <asp>
         <cache diskTemplateCacheDirectory="%SystemDrive%\inetpub\temp\ASP Compiled Templates" />
         <limits scriptTimeout="00:02:00"
            queueConnectionTestTime="00:00:05"
            requestQueueMax="1000" />
      </asp>
   <system.webServer>
<configuration>

サンプル コード

次のコード サンプルは、ASP スクリプトのタイムアウトを 2 分に設定し、要求の実行前にクライアントがまだ接続されているかどうかを ASP がチェックするようになるまでの時間を 5 秒に設定し、要求キュー内の同時 ASP 要求の最大数を 1,000 に設定します。

AppCmd.exe

appcmd.exe set config -section:system.webServer/asp /limits.scriptTimeout:"00:02:00" /commit:apphost
appcmd.exe set config -section:system.webServer/asp /limits.queueConnectionTestTime:"00:00:05" /commit:apphost
appcmd.exe set config -section:system.webServer/asp /limits.requestQueueMax:"1000" /commit:apphost

Note

AppCmd.exe を使用してこれらの設定を構成する場合は、commit パラメーターを必ず apphost に設定する必要があります。 これにより、ApplicationHost.config ファイルの適切な location セクションに構成設定がコミットされます。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection aspSection = config.GetSection("system.webServer/asp");

         ConfigurationElement limitsElement = aspSection.GetChildElement("limits");
         limitsElement["scriptTimeout"] = TimeSpan.Parse("00:02:00");
         limitsElement["queueConnectionTestTime"] = TimeSpan.Parse("00:00:05");
         limitsElement["requestQueueMax"] = 1000;

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim aspSection As ConfigurationSection = config.GetSection("system.webServer/asp")

      Dim limitsElement As ConfigurationElement = aspSection.GetChildElement("limits")
      limitsElement("scriptTimeout") = TimeSpan.Parse("00:02:00")
      limitsElement("queueConnectionTestTime") = TimeSpan.Parse("00:00:05")
      limitsElement("requestQueueMax") = 1000

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var aspSection = adminManager.GetAdminSection("system.webServer/asp", "MACHINE/WEBROOT/APPHOST");
var limitsElement = aspSection.ChildElements.Item("limits");
limitsElement.Properties.Item("scriptTimeout").Value = "00:02:00";
limitsElement.Properties.Item("queueConnectionTestTime").Value = "00:00:05";
limitsElement.Properties.Item("requestQueueMax").Value = 1000;

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set aspSection = adminManager.GetAdminSection("system.webServer/asp", "MACHINE/WEBROOT/APPHOST")
Set limitsElement = aspSection.ChildElements.Item("limits")
limitsElement.Properties.Item("scriptTimeout").Value = "00:02:00"
limitsElement.Properties.Item("queueConnectionTestTime").Value = "00:00:05"
limitsElement.Properties.Item("requestQueueMax").Value = 1000

adminManager.CommitChanges()