Вопрос по iis-6, performance, web-applications, publish – Приложение ASP.Net запускается медленно

6

У меня есть веб-приложение, написанное на ASP.Net 3.0 с использованием C #, рабочая машина - Windows Server 2003 с IIS 6.0 и SQL Server 2005.

Структура приложения

Ниже показана структура моего веб-приложения ASP.net:

Корневое приложение в IIS (// localhost / es) включает в себя общие страницы, например: главные страницы, тема, пользовательский элемент управления, папка с изображениями. количество подпроектов в корневом приложении (// localhost / es / sub-project). Удалите web.config в подпроектах. Соберите файлы подпроектов в папке bin корневого приложения (свойства подпроекта >> compile >> build output path: .. \ bin \ my application - трехуровневое веб-приложение ( Слой смещения, слой данных и уровень представления. Кроме того, каждая страница aspx имеет свой код за файлом cs)

Настройки IIS

Пул приложений, перерабатывающий рабочий процесс после «1740 минут» Рабочий процесс ожидания простоя после простоя «20 минут» Рабочий процесс проверки связи каждые 30 секунд
Ограничение времени запуска для рабочего процессора "90 секунд" Ограничение времени отключения для рабочего процессора "90 секунд"

Конфигурация приложения
Кеш ограничен ASP файлами в памяти "500"

Кеш ограничен ASP-файлами на диске "2000"

Развертывание приложения:

Я публикую веб-приложение со всеми его файлами на рабочем сервере.

Эта проблема :

В первый раз приложение работает довольно медленно, загрузка занимает более 10 секунд, однако каждый раз при следующем запросе страницы это будет быстрее. Я считаю, что при первом запросе страницы она компилируется и обычно занимает больше времени, чем другой запрос, потому что страница находится в кэш-памяти.Вопрос здесь в том, почему на компиляцию страницы уходит много времени?

Попытки решить проблему:

Я пытался сделать следующее:

Развертывание копии необходимых файлов на рабочем сервере.Изменены настройки IIS, изменено время ожидания простоя рабочего процессаОтключить трассировкуОтключить состояние сеансаОтключить просмотр состояния страницыУстановите debug = false в web.configСоздание подпроекта hello world под корневым приложением занимает 5 секунд.Создание отдельного веб-приложения hello word, как указано выше, занимает много времени для загрузки.Удалите код в обработчике событий page_load, но это не повлияет на производительность.Публикация только необходимого файла корневого приложения (без кода, написанного в коде ниже) и всех файлов в исходном коде подпроекта (код находится в коде позади),

Тем не менее, приложение все еще запускается медленно, но затем оно становится быстрее.

Пожалуйста, помогите диагностировать и решить эту проблему.

Ваш Ответ

9   ответов
0

При первой загрузке любого приложения .NET всегда будет небольшая задержка из-за компонента CLR в платформе .NET Framework. Поскольку JIT (Just in Time), находящийся внутри CLR (Runtime Environment для ASP.NET), преобразует промежуточный язык (IL) в собственный машинный код, при первом выполнении приложений .net всегда будет немного больше времени.

Подробное видео по этой конкретной проблеме можно посмотреть на:

https://www.youtube.com/watch?v=ruf4U9_Rbss&index=1&list=PL8598C97BA1D871C1

Надеюсь, поможет.

1

У меня было то же самое в приложении ruby ​​on rails с пассажиром, но я нашел хороший инструмент (http://www.wekkars.com ), который просто не дает веб-серверу засыпать.

0

попробуйте предварительно скомпилировать ваш сайт:

http://msdn.microsoft.com/en-us/library/ms227972.aspx

2

публиковать сайт, который предварительно компилируется, а не копировать его.

Поведение, которое вы испытываете, является нормальным.

-4

Обойти это невозможно. При компиляции сайта вы всегда получите небольшую задержку при первой загрузке.

0

Для приложений asp.net, работающих на IIS 7.0 и более ранних версиях, написание прогревной программы или сценария - лучший способ предотвратить тайм-ауты пула приложений. Этот триггер разогрева можно настроить из того же приложения или с внешних веб-сайтов или программ. Вы можете найти разные способы достижения того же в этомстатья

1

Вы также можете использовать функцию автозапуска приложения, которая доступна для веб-приложений .net Framework 4. Для получения дополнительной информации посетитеВот.

5

В дополнение к тому, что сказал Sky, вы можете запустить «сценарий разминки» как последний шаг процесса развертывания. Хотя это не ускорит время, необходимое для первой компиляции, использование такого скрипта, по крайней мере, не даст пользователям увидеть медленный запуск. Посмотрите здесь пример такого скрипта:http://programmerramblings.blogspot.com/2008/09/aspnet-site-warmup.html

Другая причина, по которой самый первый запрос к вашему приложению является медленным, может заключаться в том, что IIS должен запустить рабочий процесс asp.net во время самого первого запроса. Это, однако, не должно влиять на первые запросы к другим страницам.

Автозапуск веб-приложений позволяет решить самый большой недостаток производительности при первой загрузке страницы, но приложение не закрывается. мое приложение содержит много страниц, если я использую «автозапуск» или «прогрев», это повлияет на память? Разогрев дозы отрицательно влияет на производительность сервера? Есть ли какой-то недостаток в использовании «сценария разминки»? Zahraa
0
VBscript + Dos Batch file... run every 1 hr 


Dim strNewTime , strSiteName
strNewTime = Now() 
strNewTime = Replace(strNewTime, "/","")
strNewTime = Replace(strNewTime, " ","")
strNewTime = Replace(strNewTime, ":","") 

strSiteName = "https://www.yoursite.com/userlogin.aspx?dummytime=" + strNewTime

Dim oXMLHTTP
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")       

oXMLHTTP.Open "GET", strSiteName, False
oXMLHTTP.Send

If oXMLHTTP.Status = 200 Then
'  working
ELSE
    CALL SendEmail("!!! www - web site is NOT working... " + strSiteName + " *** ") 
End If

Set oXMLHTTP = Nothing 
Пожалуйста, добавьте комментарии, чтобы описать, как ваш ответ решает проблему. Chrismas007

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