Начальная задержка ответа сервера - PullRequest
0 голосов
/ 12 января 2012

Я работаю над сайтом, который размещен в нашей локальной сети на работе. Это работает ASP.Net 2.0 и IIS6. Сайт использует главные страницы и имеет несколько кодовых файлов (C #) для поисковой утилиты. После загрузки страницы сделано несколько файлов .js и пара вызовов ajax.

На данный момент сайт не очень "тяжелый" и не должен очень долго загружаться. По какой-то причине при первой загрузке сайта происходит очень длительная задержка, прежде чем что-либо происходит (20-24 секунды). Сначала я подумал, что это может быть время компиляции сайта, но я его предварительно скомпилировал, и никакой разницы не было.

После посещения сайт загружается очень быстро. Через некоторое время (несколько часов) последующее посещение будет

Если это поможет, я включил несколько снимков экрана с firebug ниже.

Кто-нибудь знает, что может быть причиной задержки или как я могу выяснить, что происходит?

enter image description here

enter image description here

1 Ответ

1 голос
/ 12 января 2012

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

Вероятно, вы также увидите это при последующих посещениях, если IIS настроен на перезапуск процесса после определенного количества секунд, достигнутого порога памяти или другого порога.

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

Что касается последующих посещений, мы всегда удаляем время перезапуска по умолчанию в IIS (примерно 22 часа) и заменяем его перезаписью с фиксированным временем. Это по-прежнему не помогает при первом запросе, но, по крайней мере, вы будете знать, когда это произойдет.

Если первоначальный запрос действительно является проблемой, и вы не можете понять, как уменьшить его с помощью кода, вы можете запланировать запуск небольшого .Net exe-файла через 10 минут после перезапуска и использовать WebClient, чтобы один раз попасть на сайт. для того, чтобы убрать процесс инициализации.

...