ASP.NETを安定稼働させるためのIISアプリケーションプール設定完全ガイド【初心者向け】
生徒
「ASP.NETをIISにデプロイしたら、急に動かなくなることがあるって聞いたんですが本当ですか?」
先生
「それはIISのアプリケーションプール設定が原因のことが多いですね。」
生徒
「アプリケーションプールって何を設定する場所なんですか?」
先生
「ASP.NETアプリを動かすための“エンジン部屋”みたいなものです。順番に見ていきましょう。」
1. IISとアプリケーションプールの基本
IIS(Internet Information Services)は、Windowsに標準で入っているWebサーバーです。Webサーバーとは、ブラウザからのアクセスに応じて、HTMLやASP.NETの処理結果を返す役割を持つソフトです。
アプリケーションプールとは、IISの中でASP.NETアプリを実際に動かすための実行環境です。料理で例えると、IISはレストラン全体、アプリケーションプールはそれぞれの厨房のような存在です。
2. アプリケーションプールが重要な理由
ASP.NETのデプロイでトラブルが起きる多くの原因は、アプリケーションプール設定にあります。設定を間違えると、画面が真っ白になったり、500エラーが出たりします。
アプリケーションプールは、メモリ管理・実行ユーザー・.NETの動作方式などをまとめて管理します。つまり、ここを正しく設定しないと、プログラムが正しく動けないのです。
3. .NET CLRバージョンの設定ポイント
アプリケーションプールには「.NET CLR バージョン」という項目があります。CLRとは、ASP.NETを実行するための基盤ソフトです。
ASP.NET Coreの場合は、「マネージドコードなし」を選択します。これは「IISが直接.NETを動かさず、ASP.NET Core側に任せる」という意味です。
<!-- web.config の例(ASP.NET Core) -->
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
4. マネージパイプラインモードの考え方
マネージパイプラインモードは、IISがリクエストをどの順番で処理するかの設定です。初心者の方は「統合」を選んでおけば問題ありません。
「クラシック」は古いASP.NET向けの方式で、現在のASP.NET MVCやASP.NET Coreではほとんど使いません。新しい家に、昔の電気配線を使うようなものです。
5. アプリケーションプールの識別情報(ユーザー)
アプリケーションプールは、Windowsのユーザー権限を使って動作します。既定では「ApplicationPoolIdentity」が使われます。
これは「このアプリ専用の匿名ユーザー」と考えるとわかりやすいです。セキュリティ的にも安全で、特別な理由がない限り変更しなくて大丈夫です。
# アプリケーションプールの実行ユーザーを確認する例
Import-Module WebAdministration
Get-Item IIS:\AppPools\MyAppPool | Select-Object processModel
6. リサイクル設定と安定稼働の関係
リサイクルとは、一定時間やメモリ使用量を超えたときに、アプリケーションプールを再起動する仕組みです。
ずっと動き続けると、メモリが少しずつ溜まることがあります。これはお風呂の水を入れ替えるようなイメージで、定期的にリフレッシュするための仕組みです。
7. アイドルタイムアウトの注意点
アイドルタイムアウトとは、一定時間アクセスがない場合にアプリケーションプールを停止する機能です。
初回アクセスが遅くなる原因になるため、業務システムでは「0(無効)」に設定することもあります。これは、エンジンを常にかけっぱなしにするような設定です。
8. ASP.NETアプリから見た動作確認
IISとアプリケーションプールが正しく設定されているかは、実際にASP.NETのコードを動かして確認します。
public IActionResult Index()
{
return Content("IISとアプリケーションプールは正常に動作しています");
}
IISとアプリケーションプールは正常に動作しています