次の方法で共有


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. 必要に応じて、[操作] ウィンドウで [適用] をクリックします。

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

[プロセッサあたりの ASP スレッド数の制限] プロパティの値を調整する

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 Limits <limits> (https://go.microsoft.com/fwlink/?LinkId=157483)」を参照してください。

このプロパティはサーバー レベルでのみ適用できるため、このプロパティの変更はサーバー上で実行されるすべての 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 Limits <limits> (https://go.microsoft.com/fwlink/?LinkId=157483)」を参照してください。

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

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

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

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

運用環境で WCF サービストレースを無効にするには、構成エディター ツール (SvcConfigEditor.exe) を使用します。 構成エディター ツールの詳細については、「構成エディター ツール (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) が与えられます。 そのため、デュアルコア CPU が 2 つ搭載された一般的なコモディティ サーバーには、400 MaxWorkerThreads が含まれます。 これは、最も要求の厳しいアプリケーション以外のすべてのアプリケーションで十分です。

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

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. 目的の圧縮オプションを設定し、[操作] ウィンドウで [適用] をクリックします。

こちらもご覧ください

パフォーマンスの最適化