すべてのサイトの制限 <limits>

  • 概要
  • 互換性
  • セットアップ
  • 方法
  • 構成
  • サンプル コード

※本ページに挿入されている画像をクリックすると、画像全体が別ウィンドウで表示されます。

概要

<siteDefaults> 要素の <limits> 要素は、帯域幅、接続数、またはサイトへのクライアント要求の接続タイムアウトを制限する既定の設定を構成します。

: 特定のサイトに対して <siteDefaults> セクションと <site> セクションの両方で <limits> 要素が構成されている場合、<site> セクションの構成がそのサイトに適用されます。

互換性

  IIS 7.0 IIS 6.0
注意 <siteDefaults><limits> は IIS 7.0 で新たに導入された要素です。 <limits> 要素は、IIS 6.0 の次のメタベース設定に代わるものです。

ConnectionTimeout
MaxBandwidth
MaxConnections

セットアップ

<siteDefaults> 要素の <limits> 要素は、IIS 7.0 の既定のインストールに含まれています。

方法

サーバーの既定の接続制限オプションを構成する方法

  1. タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。

  2. [接続] ウィンドウで、当該サーバー名を展開し、[サイト] ノードをクリックします。

  3. サーバーの [サイト] ウィンドウで、[操作] ウィンドウにある [Web サイトの既定値の設定] をクリックします。

    拡大

  4. [Web サイトの既定値] ダイアログ ボックスで、[接続制限] を展開し、すべての Web サイトに対する既定の接続制限オプションを指定して、[OK] をクリックします。

    拡大

構成

属性

属性 説明
connectionTimeout オプションの timeSpan 属性。

アクティブでないと見なされる接続を切断するまでに IIS が待機する時間を秒単位で指定します。接続は次の理由からアクティブでないと見なされます。
  • HTTP.sys の Timer_ConnectionIdle タイマーの期限切れ。接続の期限が切れ、アイドル状態のままになります。
  • HTTP.sys の Timer_EntityBody タイマーの期限切れ。要求のエンティティ ボディが到着する前に接続が期限切れになりました。要求にエンティティ ボディがあることが明らかな場合、HTTP API によって Timer_EntityBody タイマーがオンになります。最初、このタイマーの制限は connectionTimeout 値に設定されています。この要求に対して別のデータ指示を受信するたびに、HTTP API によってタイマーがリセットされ、connectionTimeout 属性で指定されている分数が追加で接続に与えられます。
  • HTTP.sys の Timer_AppPool タイマーの期限切れ。要求がサーバー アプリケーションによってキューから取得されて処理されるのをアプリケーション プールのキュー内で待機する時間が長すぎたため、接続は期限切れになりました。このタイムアウト時間は connectionTimeout です。

既定値は 00:02:00 (2 分) です。

maxBandwidth オプションの uint 属性。

サイトに使用される最大ネットワーク帯域幅を指定します。この設定は、ネットワークが IIS アクティビティで過負荷状態になることを防ぐために使用します。

既定値は 4294967295 です。
maxConnections オプションの unit 属性。

サイトの最大接続数を指定します。この設定は、同時クライアント接続の数を制限するために使用します。

既定値は 4294967295 です。

子要素

なし。

構成サンプル

次の例は、すべてのサイトに対する既定の接続制限設定を構成する方法を示しています。

<sites>
   <siteDefaults>
     <limits
         connectionTimeout="150"
         maxBandwidth="967295"
         maxConnections="150"
      />
   </siteDefaults>
</sites>

サンプル コード

次のコード サンプルでは、IIS 7.0 の既定の接続制限を構成します。

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.limits.connectionTimeout:"00:02:00" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.limits.maxBandwidth:"967295" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.limits.maxConnections:"150" /commit:apphost

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 sitesSection = config.GetSection("system.applicationHost/sites");
         ConfigurationElement siteDefaultsElement = sitesSection.GetChildElement("siteDefaults");

         ConfigurationElement limitsElement = siteDefaultsElement.GetChildElement("limits");
         limitsElement["connectionTimeout"] = TimeSpan.Parse("00:02:00");
         limitsElement["maxBandwidth"] = 967295;
         limitsElement["maxConnections"] = 150;

         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 sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
      Dim siteDefaultsElement As ConfigurationElement = sitesSection.GetChildElement("siteDefaults")

      Dim limitsElement As ConfigurationElement = siteDefaultsElement.GetChildElement("limits")
      limitsElement("connectionTimeout") = TimeSpan.Parse("00:02:00")
      limitsElement("maxBandwidth") = 967295
      limitsElement("maxConnections") = 150

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults");

var limitsElement = siteDefaultsElement.ChildElements.Item("limits");
limitsElement.Properties.Item("connectionTimeout").Value = "00:02:00";
limitsElement.Properties.Item("maxBandwidth").Value = 967295;
limitsElement.Properties.Item("maxConnections").Value = 150;

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults")

Set limitsElement = siteDefaultsElement.ChildElements.Item("limits")
limitsElement.Properties.Item("connectionTimeout").Value = "00:02:00"
limitsElement.Properties.Item("maxBandwidth").Value = 967295
limitsElement.Properties.Item("maxConnections").Value = 150

adminManager.CommitChanges()