次の方法で共有


IIS 8.0 CPU Throttling: サイトとアプリケーションのサンドボックス化

作成者: Shaun Eagan

互換性

バージョン メモ
IIS 8.0 CPU Throttling は、IIS 8.0 で更新されて、追加の調整オプションが含まれるようになりました。
IIS 7.5 CPU Throttling は、IIS 7.5 では変更されませんでした。
IIS 7.0 CPU Throttling は、IIS 7.0 で導入されました。

問題

共有ホスティング環境などのマルチテナント展開では、テナントごとにサンドボックスを作成することが重要です。 サンドボックスがないと、テナントは、他のテナントのコンテンツにアクセスしたり、メモリ、CPU、帯域幅などのリソースを独占したりして、意図的または意図せずに他のテナントに悪影響を与える可能性があります。

解決策

Windows Server 2012 のインターネット インフォメーション サービス (IIS) では、サンドボックスのスコープは IIS アプリケーション プールに設定されます。 それにより、各テナントを個別のユーザー ID で実行することによる Windows プロセス レベルでのセキュリティ境界が提供されるだけでなく、プロセスでのリソース制限も適用されます。

Windows Server 2012 では、IIS CPU Throttling 機能を使うと、お客様は、各テナントが消費できる CPU の量を、CPU の割合として正確に制限できます。 さらに、この機能は IIS アプリケーション プールごとに構成できます。つまり、テナントごとに異なる制限を設定でき、テナントがより多くの料金を支払うことで制限を高くできる、新しいビジネス モデルにつながる可能性があります。

IIS CPU Throttling は CPU リソースの "予約" ではないことを明確にしておくことが重要です。 そうではなく、最大使用量を "制限する" 方法です。

ステップ バイ ステップの手順

前提条件:

  • IIS が Windows Server 2012 にインストールされていること。

    • IIS CPU Throttling は、IIS アプリケーション プールの構成の一部です。 そのため、IIS の既定のインストールでは、この機能がインストールされます。 サーバー マネージャーからインストールする必要がある特定の IIS 機能はありません。
  • 対応する IIS アプリケーション プールを持つサイトが少なくとも 1 つあること。

    • この演習では、既定の Web サイトと DefaultAppPool を使用できます。

既知のバグの回避策:

現時点では、この機能に関する既知のバグはありません。

CPU Throttling を構成する

  1. IIS マネージャーを開きます。

  2. 左側のナビゲーション ウィンドウで [アプリケーション プール] を選びます。
    Screenshot showing the connections pane with Application Pools highlighted.

  3. DefaultAppPool 選びます。
    Screenshot showing the Applications Pools page with DefaultAppTool highlighted.

  4. [アクション] ペインで、[詳細設定] を選びます。
    Screenshot of the Actions pane with Advanced Settings highlighted.

  5. [CPU] グループで、次の構成を見つけます。
    Screenshot of the Advanced Settings dialog. The CPU section is highlighted.

    • [制限]: このアプリケーション プールの最大 CPU 使用率 (千分の一パーセント単位) を示します。 このアプリケーション プールに複数のプロセスが関連付けられている場合、制限はこのアプリケーション プールのすべてのプロセスの "合計" に適用されます。

    • [LimitAction] (制限アクション): 上の制限値が満たされたときに実行するアクションを示します。

      • Windows Server 8 では、新しいアクションとして [Throttle][ThrottleUnderLoad] が追加されました。
        Screenshot of the Advanced Settings dialog. Limit Action is set to Throttle.
      • [Throttle]: CPU 消費量は、[制限] で設定した値に調整されます。
      • [ThrottleUnderLoad]: CPU 消費量は、CPU の競合が発生した場合にのみ、[制限] で設定した値に調整されます。 つまり、CPU がアイドル状態のときは、アプリケーション プールがより多くの CPU アクティビティを消費する可能性があります。
    • [LimitInterval]: [Throttle][ThrottleUnderLoad] のどちらにも使用されません。 この構成属性は、下位互換性のために以前のバージョンの Windows から引き継がれています。

  6. 上限を 30% に設定するには、次のように入力します。

    1. [制限]: 30000 (千分の一パーセント単位で 30%)
    2. [LimitAction] (制限アクション): Throttle
      Screenshot of the Advanced Settings dialog. Limit is highlighted.
  7. これで終了です。 負荷生成ツールを使って、既定の Web サイトに要求を送信します。 WCat (https://www.iis.net/community/default.aspx?tabid=34&g=6&i=1467) などのツールを使って、トラフィックを生成できます。

  8. アプリケーション プールごとに個別に構成する必要がないように、対象の構成設定を既定値として設定できることに注意してください。 アプリケーション プールの既定値を構成するには、[アクション] ペインの [Set Application Pool Defaults] (アプリケーション プールの既定値の設定) を選びます。
    Screenshot of the Actions pane. Set Application Pool Defaults is highlighted.

  9. アプリケーション プールの既定値を構成するため、同じ設定がそこに表示されます。
    Screenshot of the Application Pool Defaults dialog. CPU Limit is highlighted.

シナリオ

次のシナリオを展開してみてください。

  • IIS CPU Throttling 機能は、マルチテナント環境向けに設計されています。 共有ホスティングの展開のような、何千ものサイトやアプリケーションがある環境で、これらの設定を試してください。
  • テナントの "グループ" ごとに異なる制限を設定し、他の顧客より多くの CPU リソースを消費することを許可されている顧客をシミュレートします。
  • [LimitAction] (制限アクション) として [ThrottleUnderLoad] を設定して、動作を観察します。 CPU に競合がある場合は、[Throttle] と同じように機能します。 CPU に競合がない場合、アプリケーション プールは [制限] に設定されている値より多くの CPU リソースを使用できます。
  • Windows Server 2012 の IIS CPU Throttling 機能と共に、メモリと帯域幅の制限を使ってサンドボックスを作成します。 メモリと帯域幅の制限は Windows Server 2008 と Windows Server 2008 R2 に存在するため、これらの機能についてはこのドキュメントでは具体的に説明していません。

まとめ

Windows Server 2012 での IIS CPU Throttling 機能について調べることができました。