2

アプリケーションのJITコンパイルを追跡するにはどうすればよいですか?大きなWebサイトの一部である小さなasp.netアプリケーション(残りのコードはクラシックasp)があるため、頻繁にアクセスされることはなく、タイムアウトまたはアプリプールのリサイクル後に(おそらく)再コンパイルされます。再コンパイルには最大2分かかります!!

何が起こっているのかを正確に追跡するのに役立つトレースツールまたはperfmonのカウンターはありますか?

私はプリコンパイルを試みるつもりでしたが、タイムアウトとアプリプールのリサイクルはそれを役に立たなくするだろうと思います。(またはそれは悪い仮定ですか?)

事前にThx!

4

1 に答える 1

3

問題がJitであると本当に確信している場合は、.NETパフォーマンスカウンターを使用できます。「パフォーマンス」管理コンソール(オペレーティングシステムによって異なります)を開き、[+]をクリックして、.NET CLR Jitカウンターを追加します。

Jitパフォーマンスカウンター

これにより、Jit、Jitに費やされている時間などに関するいくつかの簡単なメトリックを取得できます。

さて、問題は完全に「Jit」にあるとは思いません。アプリケーションをコンパイルするASP.NET、厳密Temporary ASP.NET Filesな名前の署名チェックなどである可能性があります。CLRJit以外にも多くのことを検討します。

Jitは具体的には、ILコードがランタイムによってネイティブコードにコンパイルされるか、NGENで検出される場合です。アプリケーション全体が一度にJITされるわけではありません。各メソッドは、ケースバイケースでJITされます。

ベストショットは、オブジェクトの下にあるCompilations Totalカウンターも確認し、ASP.NET ApplicationsWebサイトを事前にコンパイルしてみることだと思います。

于 2011-07-21T16:42:09.660 に答える