サーバー ランタイム <serverRuntime>

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

概要

<serverRuntime> 要素は、インターネット インフォメーション サービス (IIS) 7.0 のサーバー ランタイムに関連する次の設定を構成します。

  • enabled 属性を true に設定すると、<serverRuntime> 要素が構成されている URL のコンテンツを IIS 7.0 で提供するように構成します。enabled 属性を false に設定すると、IIS 7.0 でその URL のコンテンツを提供しないように構成します。

  • alternateHostName 属性は、HTTP の Content-Location ヘッダーに、使用しているコンピューター名とは異なるホスト名を指定します。

  • appConcurrentRequestLimit 属性は、アプリケーションでキューに格納される同時要求の最大数を指定します。

  • enableNagling 属性は、ネーグル処理を有効または無効にします。ネーグル処理とは、データを送信する前に必要なパケット数の最小化を図ることによって、TCP 上の HTTP を最適化して効率を向上させる処理です。この処理においては、パケットのデータ エリアがいっぱいになるまで、または 200 ミリ秒のタイムアウトが発生するまで、または送信側が送信データの処理完了を通知するまで、パケットの送信を待機します。IIS Version 5.1 以前では、クライアントに送信されるすべてのデータでネーグル処理を使用します。

    : ネーグル処理では、パケットがいっぱいにならない場合、応答が送信されるまでに 200 ミリ秒の遅延が発生するという欠点があります。この動作は、クライアントへの応答で HTTP keep-alive ヘッダーをサポートする ISAPI 拡張を使用する場合に最もよく見られます。この場合、IIS は応答の後に接続を閉じないため、結果的に最後のパケットが 200 ミリ秒待機することになります。

  • IIS 7.0 は 2 つの属性の状態を確認して、特定の URL のトラフィック レベルを判断します。frequentHitTimePeriod 属性で構成した期間内に frequentHitThreshold 属性で構成した回数分 URL が要求されると、その URL は頻繁にヒットしていると判断されます。この情報は、処理にこの情報を使用する HTTP モジュールを書き込む際に使用されます。詳細については、MSDN の「IHttpUrlInfo::IsFrequentlyHit Method」 (英語) を参照してください。

  • maxRequestEntityAllowed 属性および uploadReadAheadSize 属性は、それぞれ要求のエンティティ ボディに許可されるバイト数の最大値、および Web サーバーがバッファーに読み込んで ISAPI 拡張に渡すバイト数の制限を構成します。

互換性

  IIS 7.0 IIS 6.0
説明 <serverRuntime> は IIS 7.0 で新たに導入された要素です。 <serverRuntime> 要素は、IIS 6.0 の次のメタベース プロパティに代わるものです。

SetHostName
MaxRequestEntityAllowed
UploadReadAheadSize

セットアップ

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

方法

IIS 7.0 には、<serverRuntime> 要素を構成するためのユーザー インターフェイスはありません。<serverRuntime> 要素をプログラムを使用して構成する方法の例については、このドキュメントの「サンプル コード」セクションを参照してください。

構成

属性

属性 説明
alternateHostName オプションの string 属性。

リダイレクトに使用するホスト名を指定します。
appConcurrentRequestLimit オプションの uint 属性。

1 つのアプリケーションにおいてキューに格納可能な要求の最大数を指定します。

既定値は 5000 です。
enabled オプションの Boolean 属性。

Web サーバー上のアプリケーションがコンテンツを提供できるか (true)、または提供できないか (false) を指定します。

既定値は true です。
enableNagling オプションの Boolean 属性。

ネーグル処理を有効にするか (true)、または無効にするか (false) を指定します。

既定値は false です。
frequentHitThreshold オプションの uint 属性。

URL の要求回数を指定します。frequentHitTimePeriod 属性で指定した期間内にこの回数の要求が発生すると、頻繁にヒットしていると見なされます。この値は 1 ~ 2147483647 の範囲で指定する必要があります。

既定値は 2 です。
frequentHitTimePeriod オプションの timeSpan 属性。

期間を指定します。この期間内に、frequentHitThreshold 属性で指定した回数分の URL 要求が発生すると、頻繁にヒットしていると見なされます。

既定値は 00:00:10 (10 秒) です。
maxRequestEntityAllowed オプションの uint 属性。

要求のエンティティ ボディに格納可能なバイト数の最大値を指定します。Content-Length ヘッダーにこれよりも大きい値が指定されている場合、IIS は HTTP 403 エラー応答を返します。

既定値は 4294967295 (無制限) です。
uploadReadAheadSize オプションの uint 属性。

Web サーバーがバッファーに読み込んで ISAPI 拡張またはモジュールに渡すバイト数を指定します。これは、クライアント要求ごとに 1 回発生します。ISAPI 拡張またはモジュールは、クライアントからすべての追加データを直接受け取ります。この値は 0 ~ 2147483647 の範囲で指定する必要があります。

既定値は 49152 です。

子要素

なし。

構成サンプル

次の構成サンプルでは、<serverRuntime> 要素の enable 属性を true に設定します。また、"頻繁にヒットしている" と見なすための URL の要求回数を構成するのに、frequentHitThreshold 属性の要求数を 5 回、frequentHitTimePeriod 属性を 20 秒に設定します。

<location path="Default Web Site">
   <system.webServer>
      <serverRuntime enabled="true"
         frequentHitThreshold="5"
         frequentHitTimePeriod="00:00:20" />
   </system.webServer>
</location>

サンプル コード

次のコード サンプルでは、<serverRuntime> 要素の enable 属性を true に設定します。また、"頻繁にヒットしている" と見なすための URL の要求回数を構成するのに、frequentHitThreshold 属性の要求数を 5 回、frequentHitTimePeriod 属性を 20 秒に設定します。

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /enabled:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitThreshold:"5" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitTimePeriod:"00:00:20" /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 serverRuntimeSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site");
         serverRuntimeSection["enabled"] = true;
         serverRuntimeSection["frequentHitThreshold"] = 5;
         serverRuntimeSection["frequentHitTimePeriod"] = TimeSpan.Parse("00:00:20");

         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 serverRuntimeSection As ConfigurationSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site")
      serverRuntimeSection("enabled") = True
      serverRuntimeSection("frequentHitThreshold") = 5
      serverRuntimeSection("frequentHitTimePeriod") = TimeSpan.Parse("00:00:20")

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

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

var serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site");
serverRuntimeSection.Properties.Item("enabled").Value = true;
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5;
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20";

adminManager.CommitChanges();

VBScript

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

Set serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site")
serverRuntimeSection.Properties.Item("enabled").Value = True
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20"

adminManager.CommitChanges()