IISとASP.NETとApplicationPoolをいじっていたらよくわからない現象に悩まされたこと
原因がわかっていないので私が気付いている範囲で環境とかやったことを書きます
環境
アプリ
ASP.NET MVCでWeb API 2 (だっけ?)を作成
Web API内ではサードパーティー製の64bit DLL (Cで使うやつ)をラップしたDLLをP/Invokeで使用
サードパーティー製DLLはそこそこ大きくてそれが読むデータも大きい (データサイズは関係ないかも)
やったこと
Administratorですべてセットアップ(ランタイムのインストールとか)
アクセス権とか面倒なのでAdministratorで動くApplicationPoolを新たに作成
アプリは上記ApplicationPoolで動かすように
現象
OSを起動してWeb APIにアクセスすると30分以上応答がかえって来ない
P/InvokeしていないAPIにアクセスするとすぐに応答を返してくれる
応答が返ってこない時のディスクアクセスとかCPU使用率はそんなに上がっていない
一度応答を返すとそのあとは普通に返ってくる
応答を返し始めるタイミングは不明 (ログとか見ていると突然返す感じ)
iisreset等で再起動かけた場合はすぐに返ってくる (返ってこない場合もあったかも)
応答が返ってこない間にApplicationPoolのpingエラーで勝手にApplicationPoolが再起動させられているっぽい (?)
解決策 (?)
使用するApplicationPoolをDefaultAppPoolに戻したら現象は発生しなくなった
ユーザー(Administratorsグループ)を新規に作ってそのアカウントでApplicationPoolを動かしても問題なし (新規ユーザーは一度もログインしていない)
うん、全然わからない
とりあえず動いているからいいやって感じで終了