プログラムの事とか

お約束ですが「掲載内容は私個人の見解です」

IISとASP.NETとApplicationPoolをいじっていたらよくわからない現象に悩まされたこと

原因がわかっていないので私が気付いている範囲で環境とかやったことを書きます

環境

Windows Server 2012 R2

アプリ

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を動かしても問題なし (新規ユーザーは一度もログインしていない)

 

うん、全然わからない

とりあえず動いているからいいやって感じで終了