Как я могу отследить JIT-компиляцию ASP.Net? Это очень медленно - PullRequest
2 голосов
/ 21 июля 2011

Как отследить JIT-компиляцию приложения? У нас есть небольшое приложение asp.net, которое является частью более крупного веб-сайта (классический asp для остальной части кода), поэтому к нему не очень часто обращаются и (вероятно) перекомпилируют после тайм-аута или перезапуска пула приложений. Перекомпиляция занимает до 2 минут!

Есть ли в perfmon инструмент трассировки или счетчики, которые могут помочь мне отследить, что именно происходит?

Я собирался попробовать и прекомпилировать, но я думаю, что тайм-ауты и повторные пулы приложений сделают это бесполезным. (или это плохое предположение?)

Спасибо заранее!

1 Ответ

3 голосов
/ 21 июля 2011

Если вы действительно уверены, что проблема в Jit, вы можете использовать .NET Performance Counters. Откройте консоль управления «Performance» (зависит от операционной системы) и нажмите «+», затем добавьте счетчик .NET CLR Jit:

Jit Performance Counter

Это позволит вам получить простые метрики о Jit, сколько времени в нем тратится и т. Д.

Теперь, я не думаю, что проблема полностью в "Джите". Это может быть ASP.NET, компилирующее ваше приложение в Temporary ASP.NET Files, это может быть проверка подписи Strong Name и т. Д. Я бы рассмотрел много других вещей, кроме CLR Jit.

Jit, в частности, - это когда IL-код компилируется в собственный код во время выполнения или находит его в NGEN. Все ваше приложение не получает JITed сразу - каждый метод JITed в каждом конкретном случае.

Я думаю, что вам лучше всего взглянуть на счетчик Compilations Total под объектом ASP.NET Applications и попробовать предварительно скомпилировать ваш сайт.

...