Приложение ASP.NET на IIS7 - очень медленный запуск после iisreset

Мое понимание - то, что большинство финансовых систем выражает валюту с помощью целых чисел - т.е. считая все в центах.

двойная точность IEEE на самом деле может представлять все целые числа точно в диапазоне-2^53 через +2^53. (Восхищение хакера, стр. 262), Если Вы используете только дополнение, вычитание и умножение, и сохраняете все к целым числам в этом диапазоне тогда, что Вы не должны видеть потерю точности. Я очень опасался бы разделения или более сложных операций, как бы то ни было.

13
задан frankadelic 17 September 2009 в 22:15
поделиться

5 ответов

IL преобразуется в машинный машинный код (сборка) компилятором Just-In-Time, и вы можете подождать, пока все волшебство произойдет.

При компиляции исходного кода в управляемый код, компилятор переводит источник в промежуточное звено Microsoft язык (MSIL). Это Независимый от процессора набор инструкций которые можно эффективно преобразовать в собственный код. Microsoft промежуточный язык (MSIL) - используемый перевод как результат ряда компиляторы. Это вход в JIT-компилятор. В Common Language Runtime включает JIT компилятор для преобразования MSIL в собственный код.

До Microsoft Intermediate Language (MSIL) может быть выполнен, должен быть преобразован .NET Framework точно в срок (JIT) компилятор в родной код. Это специфичный для процессора код, который работает на той же компьютерной архитектуре как JIT-компилятор. Вместо того, чтобы использовать время и память, чтобы преобразовать все MSIL в переносимом исполняемом файле (PE) файл в собственный код. Он преобразует MSIL по мере необходимости во время выполнения, затем кэширует полученный собственный код, чтобы он доступен для любого последующего вызовы.

источник

4
ответ дан 1 December 2019 в 22:39
поделиться

Это компиляция страниц asp.Net в промежуточный язык + компиляция JIT - это происходит только при первой загрузке страницы. (См. http://msdn.microsoft.com/en-us/library/ms366723.aspx )

Если вас это действительно беспокоит, вы можете предотвратить это, предварительно скомпилировав свой сайт.

РЕДАКТИРОВАТЬ: Просто перечитайте вопрос - 60 секунд - это очень много, и вы ожидаете увидеть некоторую активность процессора в это время. Проверьте журнал событий на наличие ошибок / сообщений в местах назначения системы и приложения. Также попробуйте создать аварийный дамп процесса w3wp в течение этих 60 секунд - есть шанс узнать, что он делает, посмотрев на некоторые из стеков вызовов.

Если каждый раз требуется ровно 60 секунд, то вполне вероятно, что он ждет тайм-аута чего-то - 60 секунд - хорошее круглое число. Убедитесь, что у него есть правильные соединения с контроллерами домена и т. Д.

(Если есть какие-то диагностические инструменты IIS, которые могли бы работать лучше, то, боюсь, я не знаю о них, этот вопрос может быть больше подходит для ServerFault, приведенный выше подход к поиску и устранению неисправностей больше похож на разработчика :-p)

4
ответ дан 1 December 2019 в 22:39
поделиться

Более 60 секунд звучит подозрительно. Попробуйте запустить страницу test.html, чтобы узнать, сколько времени это займет. Это изолирует роль IIS7.

Затем временно переименуйте папки web.config, global.asax и приложения и попробуйте страницу test.aspx (очень простая страница). Это изолирует ASP.NET.

Если оба из них работают быстро (т.е. около 10 секунд), значит, это ваше приложение. Но если оба они медленные, то не приложение, а что-то с самим сервером.

2
ответ дан 1 December 2019 в 22:39
поделиться

Это не имеет отношения к JIT-компиляции. Обычный компилятор C # компилирует ваш код за файлами (.aspx.cs) на промежуточном языке в сборку при запуске, если эта сборка не существует или файлы кода изменились. Сборка вашего веб-сайта находится в папке «bin» вашего веб-сайта.

Фактически, JIT-компиляция происходит после этого, но это очень быстро и не займет несколько минут. JIT-компиляция происходит при каждом запуске приложения .net, и это не займет больше секунды просмотра.

Вы можете избежать копирования вашего веб-сайта, если развернете уже скомпилированную сборку веб-сайта (YourWebsite.dll) в папку bin. Также можно развернуть только файлы aspx и оставить код позади файлов (aspx.cs) файлов.

1
ответ дан 1 December 2019 в 22:39
поделиться

У нас возникла похожая проблема, и оказалось, что Windows проверяет время отзыва сертификатов подписания. Проверьте, не пытается ли ваш сервер где-нибудь позвонить (например, crl.microsoft.com). Возможно, у вас неправильная настройка прокси? Или брандмауэр на пути? В конце концов, мы определили, что имеем достаточно контроля над сервером и не хотим "звонить домой", поэтому мы просто отключили проверку. Вы можете сделать это с помощью .NET 2.0 SP1 и позже, добавив следующее в machine.config

<runtime> <generatePublisherEvidence enabled="false"/> </runtime>

Я не уверен, что вы можете просто поместить это в app.config/web.config

.
6
ответ дан 1 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: