IISのアプリケーションプールのプロセス数を複数にする - アプリケーションプールをWebガーデンに設定する - IIS
IISのアプリケーションプールのプロセス数を複数にする手順を紹介します。
概要
IISのアプリケーションプールのプロセス数を複数にすることで、同時アクセスなどに対処できるようになります。アプリケーションプールのプロセス数を複数にすると、アプリケーションプールはマルチプロセス化し、Webガーデンと呼ばれます。
手順
[インターネット インフォメーション サービス (IIS) マネージャー]を起動します。下図のウィンドウが表示されます。
ウィンドウ左側のツリービューのノードを開き、サーバーノードの子ノードの[アプリケーション プール]のノードをクリックして選択します。右側にアプリケーション プールの一覧リストが表示されます。
プロセス数を変更したいアプリケーションプールの項目をクリックして選択します。マウスの右ボタンをクリックし、ポップアップメニューを表示します。メニューの[詳細設定...] の項目をクリックします。
[詳細設定]のダイアログが表示されます。
項目リストを下にスクロールし、[ワーカー プロセスの最大数]の項目の値を調べます。値が "1" になっていることがわかります。
[ワーカー プロセスの最大数]の値を2以上にするとアプリケーションプールがマルチプロセス化し、Webガーデンになります。プロセスの最大数を設定します。設定後[OK]ボタンをクリックしてダイアログを閉じます。
なお、[ワーカー プロセスの最大数]の値を0にするとOSのNUMAノード数(通常ソケット数)に応じた値になります。
以上で設定は完了です。
補足:Webガーデンの効果
プロセス数を複数にする効果ですが、アプリケーションプールのワーカープロセス数の設定項目の説明に以下の説明があります。
[maxProcesses]アプリケーション プールに対する要求を処理できるワーカー プロセスの最大数です。2以上の値が指定されると、
アプリケーション プールは"Web ガーデン" になります。NUMA 対応しシステムでは、この数値が 0の場合、IIS では、最適なパフォーマンスを得るために
NUMAノードと同じ数のワーカー プロセスが開始されます。
上記の説明から、最適なパフォーマンスとするためには、ワーカープロセスの最大値はNUMAノード数にするのが良いことがわかります。
一般的なエントリーサーバーではソケット数が1つのため、NUMAモードは有効になっておらず、NUMAノード数は0となっています。(マシンのNUMAノード数を確認する方法は
こちらの記事を参照してください。)
ミドルクラスのサーバーでCPUがデュアルソケットの場合に、NUMAモードを有効にするとNUMAノードが2になります。または、シングルソケットでCPUが Sub NUMA Clustering に対応している場合、Sub NUMA Clustering を有効にすることでもNUMAノードを2にできます。こうしたことから、多くの環境ではNUMAモードになっていない可能性が高いため、
ワーカープロセス数の最大値を上げたとしても、パフォーマンスの向上にはならない可能性が高そうです。
また、プロセス間での情報の共有されないため、アプリケーション変数、セッション変数などサーバー側のメモリに保持される情報は利用できないことに注意する必要があります。セッション変数の値もプロセスが違えば異なります。
このため、Webガーデンで実行するWebアプリケーションは、複数台のWebサーバーでアプリケーションを動作させる場合と同じ設計にする必要があります。
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。