サーバー ランタイム <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()