IIS 10.0でリクエストを受信してからASP.NETアプリケーション(ワーカースレッド)にデータを渡すまでの間、どこで時間がかかっているかを調べる方法はありますか
「リクエストを受信してからASP.NETアプリケーション(ワーカースレッド)にデータを渡す」というのは、下の図(IIS がブラウザから要求を受けて応答を返すまでの流れ)で言うとどこに当たるのでしょう?
(出典: Microsoft 公式解説書 一目でわかる IIS 7.0)
何にせよ、(1) IIS ログの time-taken と (2) アプリの処理時間を調べるということはすでにされていて、どこで時間がかかっているかは判明しているように見えますが?
実測結果から問題は (2) より (1) がかなり大きいことで、質問はその原因は何かと言うことですか?
であれば、自分が推測できるのは、(1) には network time が含まれる、すなわち最後のパケットに対するクライアントからの ACK を受け取るまでの時間が含まれるということで、ネットワークの問題がありそうということです。
time-taken に network time が含まれることについて、詳しくは以下の記事を見てください。
IIS ログの time-taken http://surferonwww.info/BlogEngine/post/2016/07/01/time-taken-of-iis-log.aspx
他には、スレッドプールのスレッドが不足して要求がキューに溜まって待たされるということもあるかもしれません。その時間が time-taken に含まれるかどうかを明記してある Microsoft のドキュメントは見つかりませんが、time-taken は HTTP.sys が要求の最初のバイトを受け取った時点でカウントは始まるとのことですので、含まれていると思われます。
ということで、「どこで時間がかかっているかを調べる」ということはすでに質問者さんが実施済みのように思われますが、いかがですか?