IIS パフォーマンスの最適化

IIS 構成オプションを適用して IIS のパフォーマンスを向上させる

インターネット インフォメーション サービス (IIS) では、IIS のパフォーマンスに影響を与える多数の構成パラメーターが公開されています。 このトピックでは、これらのパラメーターのいくつかについて説明し、IIS のパフォーマンスを向上させるためにパラメーター値を設定するための一般的なガイダンスを提供します。

重要な情報のみをログに記録するか、IIS ログを完全に無効にする

IIS ログ記録は、運用環境で最小化するか無効にする必要があります。 ログ記録を無効にするには、次の手順に従います。

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

  2. [ 接続 ] ウィンドウで、[ サイト] をクリックして展開し、ログ記録を無効にする Web サイトをクリックして選択し、[ 機能ビュー] をクリックして選択し、[ ログ 機能] をダブルクリックします。

  3. [操作] ウィンドウで [無効にする] をクリックして、この Web サイトのログ記録を無効にします。

運用環境で IIS ASP デバッグを無効にする

運用環境では、IIS ASP デバッグを無効にする必要があります。 IIS ASP デバッグを無効にするには、次の手順に従います。[ 接続 ] ウィンドウで、[ サイト] をクリックして展開し、ASP デバッグを無効にする Web サイトをクリックして選択し、[ 機能ビュー] をクリックして選択し、 ASP 機能をダブルクリックします。 クリックして [コンパイル] を展開し、[デバッグのプロパティ] をクリックして展開し、[クライアント側のデバッグを有効にする] と [サーバー側のデバッグを有効にする] の両方が False に設定されていることを確認します

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

  2. [ 接続 ] ウィンドウで、[ サイト] をクリックして展開し、ASP デバッグを無効にする Web サイトをクリックして選択し、[ 機能ビュー] をクリックして選択し、 ASP 機能をダブルクリックします。

  3. クリックして [コンパイル] を展開し、[デバッグのプロパティ] をクリックして展開し、[クライアント側のデバッグを有効にする] と [サーバー側のデバッグを有効にする] の両方が False に設定されていることを確認します

  4. 必要に応じて、[操作] ウィンドウの [適用] をクリックします。

    ASP.NET アプリケーションと Web サービスのデバッグを無効にするには、Web アプリケーションの <web.config ファイルでコンパイル debug="false"> セクションを指定します。

ASP Threads Per Processor Limit プロパティの値を調整する

ASP Threads Per Processor Limit プロパティは、IIS によって作成されるプロセッサあたりのワーカー スレッドの最大数を指定します。 プロセッサ使用率が 50% 以上になるまで、プロセッサごとのスレッド数の制限の値を増やします。 この設定は、Web アプリケーションのスケーラビリティと一般的なサーバーのパフォーマンスに大きく影響する可能性があります。 このプロパティは同時に実行できる ASP 要求の最大数を定義するため、ASP アプリケーションが外部コンポーネントに対して拡張呼び出しを行わない限り、この設定は既定値のままにする必要があります。 この場合、プロセッサあたりのスレッド数の制限の値を増やします。 これにより、サーバーはより多くのスレッドを作成して、より多くの同時実行要求を処理できるようになります。 [プロセッサあたりのスレッド数の制限] の既定値は 25 です。 このプロパティの推奨される最大値は 100 です。

[プロセッサあたりのスレッド数の制限] の値を大きくするには、次の手順に従います。[ 接続 ] ウィンドウで Web サーバーを選択し、[ 機能] ビューをクリックして選択し、 ASP 機能をダブルクリックします。

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

  2. [ 接続 ] ウィンドウで、Web サーバーを選択し、[ 機能ビュー] をクリックして選択し、 ASP 機能をダブルクリックします。

  3. [動作][制限のプロパティ] を展開し、[プロセッサあたりのスレッド数の制限] をクリックし、[プロセッサあたりのスレッド数の制限] に目的の値を入力し、[操作] ウィンドウで [適用] をクリックします。

    IIS 7.5/7.0 asp 要素の limits> 要素の<プロパティを変更する方法の詳細については、「ASP の制限 <> (https://go.microsoft.com/fwlink/?LinkId=157483)」を参照してください。><

Note

このプロパティはサーバー レベルでのみ適用できるため、このプロパティの変更は、サーバー上で実行されるすべての Web サイトに影響します。

ASP Queue Length プロパティの値を調整する

このプロパティをチューニングする目的は、ASP 要求キューがいっぱいになったときにサーバーがクライアントに HTTP 503 (サーバーがビジー状態) エラーを送信する頻度を最小限に抑えながら、適切な応答時間を確保することです。 ASP Queue Length プロパティの値が小さすぎる場合、サーバーは HTTP 503 エラーをより高い頻度で送信します。 ASP Queue Length プロパティの値が大きすぎる場合、ユーザーは、実際に要求がキューで待機しているときにサーバーが応答していないと認識する可能性があります。 トラフィックが多い期間中にキューを監視することで、Web 要求のピークと谷のパターンを識別する必要があります。 ピーク値をメモし、ピーク値のすぐ上に ASP Queue Length プロパティの値を設定します。 キューを使用して、短期的なスパイクを処理し、応答時間を確保し、システムを調整して、持続的で予期しないスパイクが発生したときに過負荷が発生しないようにします。 ASP Queue Length プロパティを調整するためのデータがない場合は、スレッドの合計に対するキューの 1 対 1 の比率を設定することをお勧めします。 たとえば、ASP Threads Per Processor Limit プロパティが 25 に設定されていて、4 つのプロセッサ (4 * 25 = 100 スレッド) がある場合は、ASP Queue Length プロパティを 100 に設定し、そこからチューニングします。

Queue Length プロパティの値を大きくするには、次の手順に従います。

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

  2. [ 接続 ] ウィンドウで、Web サーバーを選択し、[ 機能ビュー] をクリックして選択し、 ASP 機能をダブルクリックします。

  3. クリックして [動作] の [制限のプロパティ] を展開し、[キューの長さ] をクリックし、[キューの長さ] に目的の値を入力し、[操作] ウィンドウで [適用] をクリックします。

    IIS 7.5/7.0 asp 要素の limits> 要素の<プロパティを変更する方法の詳細については、「ASP の制限 <> (https://go.microsoft.com/fwlink/?LinkId=157483)」を参照してください。><

Note

このプロパティはサーバー レベルでのみ適用できるため、このプロパティの変更は、サーバー上で実行されるすべての Web サイトに影響します。

MaxPoolThreads レジストリ エントリを調整する

この設定では、プロセッサごとに作成するプール スレッドの数を指定します。 プール スレッドは、要求のネットワークwatchし、受信要求を処理します。 MaxPoolThreads 数には、ISAPI アプリケーションで使用されるスレッドは含まれません。 一般に、プロセッサごとに 20 個を超えるスレッドを作成しないでください。 MaxPoolThreads は、既定値が 4 の HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\ にあるREG_DWORDレジストリ エントリです。

WCF サービスのトレースを無効にする

構成エディター ツール (SvcConfigEditor.exe) を使用して、運用環境で WCF サービスのトレースを無効にします。 構成エディター ツールの詳細については、「 構成エディター ツール (SvcConfigEditor.exe) (https://go.microsoft.com/fwlink/?LinkID=127070)」を参照してください。

IIS 7.5/7.0 統合モード ASP.NET 2.0 MaxConcurrentRequests を構成する

ASP.NET 2.0 が統合モードの IIS 7.5/7.0 でホストされている場合、スレッドの使用は、クラシック モードの IIS 7.5/7.0 とは異なる方法で処理されます。 ASP.NET 2.0 が統合モードの IIS 7.5 でホストされている場合、ASP.NET 2.0 では、要求を同時に実行するスレッドの数ではなく、同時に実行する要求の数が制限されます。 同期シナリオでは、要求の数がスレッドの数と同じになるため、スレッドの数が間接的に制限されます。 ただし、非同期シナリオでは、要求とスレッドの数は、スレッドよりもはるかに多くの要求を持つことができるため、大きく異なる可能性があります。 統合モードで IIS 7.5 で ASP.NET 2.0 を実行すると、machine.config の "httpRuntime" 要素の minFreeThreads と minLocalRequestFreeThreads は無視されます。 IIS 7.5 統合モードの場合、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0 内の MaxConcurrentRequestsPerCPU という名前の DWORD によって、CPU あたりの同時要求の数が決定されます。 既定では、レジストリ キーは存在せず、CPU あたりの要求数は 12 に制限されています。 .NET Framework 3.5 SP1 には、aspnet.config ファイルを介した IIS アプリケーション プールの構成をサポートする v2.0 バイナリの更新プログラムが含まれています。 この構成は統合モードにのみ適用されます (クラシック/ISAPI モードでは、これらの設定は無視されます)。既定値を含む新しい aspnet.config 構成セクションを次に示します。

<system.web>
   <applicationPool maxConcurrentRequestsPerCPU="12" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/>
</system.web>

IIS 7.5 統合モードでは、machine.config ファイルの "processModel" セクションの maxWorkerThreads パラメーターと maxIoThreads パラメーターは、実行中の要求の数自体を管理するために使用されませんが、ASP.NET によって使用される CLR スレッド プールのサイズを管理するために引き続き使用されます。 machine.config の "processModel" セクションに "autoConfig=true" (既定の設定) がある場合、これにより、アプリケーション プールには論理 CPU あたり最大 100 個のワーカー スレッド (MaxWorkerThreads) が与えられます。 そのため、2 つのデュアルコア CPU を備えた一般的なコモディティ サーバーには、400 個の MaxWorkerThreads が含まれます。 これは、最も要求の厳しいアプリケーション以外のすべてに十分である必要があります。

IIS 7.5 でのスレッド使用量 ASP.NET 構成の詳細については、「IIS 7.0 でのスレッド使用量の ASP.NET に関する Thomas Marquardt のブログ (https://go.microsoft.com/fwlink/?LinkId=157518)」を参照してください。

IIS 7.5/7.0 統合モード ASP.NET 4 MaxConcurrentRequests を構成する

.NET Framework 4 では、maxConcurrentRequestsPerCPU の既定の設定は 5000 です。これは非常に大きな数であるため、多数の非同期要求を同時に実行できます。 詳細については、「applicationPool> 要素 (Web 設定)」 () を参照してください<https://go.microsoft.com/fwlink/?LinkID=205339

IIS 7.5/7.0 統合モードの場合、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0 内の MaxConcurrentRequestsPerCPU という名前の DWORD によって、CPU あたりの同時要求の数が決定されます。 既定では、レジストリ キーは存在せず、CPU あたりの要求数は 5000 に制限されています。

IIS HTTP 圧縮を有効にする

使用可能な帯域幅をより効率的に使用するには、IIS HTTP 圧縮を有効にします。 HTTP 圧縮では、コンテンツがローカル ストレージと UNC リソースのどちらから提供されるかに関係なく、圧縮が有効なブラウザーと IIS の間の転送時間が短縮されます。

  • Web サーバー レベルで圧縮を構成するには:

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

    2. [ 接続 ] ウィンドウで、Web サーバーを選択し、[ 機能ビュー] をクリックして選択し、[ 圧縮 ] 機能をダブルクリックします。

    3. 目的の圧縮オプションを設定し、[操作] ウィンドウで [適用] をクリックします。

  • Web サイト レベルで圧縮を構成するには:

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

    2. [ 接続 ] ウィンドウで、[ サイト] をクリックして展開し、クリックして圧縮を構成する Web サイトを選択し、[ 機能ビュー] をクリックして選択し、[ 圧縮 ] 機能をダブルクリックします。

    3. 目的の圧縮オプションを設定し、[操作] ウィンドウで [適用] をクリックします。

参照

パフォーマンスの最適化