Первый запрос веб-приложения IIS 7.5 после перезагрузки приложения-пула очень медленный

У нас есть наш сайт, работающий на двух машинах с iis 7.5 Один прекрасно работает.

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

Я проверил настройки приложения на обоих серверах, и они совпадают, а версия webapp на обоих серверах одинакова. Я запустил диспетчер задач и монитор ресурсов, добавив, увидев соединение с машиной, когда я делаю запрос, но ничего больше не происходит, iis даже не показывает запрос в журналах до его завершения. Я действительно не знаю, что он делает в среднем.

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

EDIT: Итак, теперь у меня есть дополнительная информация, финал получил неудачные журналы запросов для работы (должен был предоставить разрешения пользователя IIS_IUSRS), но у меня есть несколько журналов, чтобы узнать, что происходит

Утерянное время находится в промежутке между двумя секундами в файле журнала.

1. MODULE_PRECONDITION_NOT_MATCH    Name="ScriptModule-4.0", Precondition="managedHandler,runtimeVersionv4.0"            12:09:46.422 
2. VIRTUAL_MODULE_UNRESOLVED        Name="FormsAuthentication", Type="System.Web.Security.FormsAuthenticationModule"     12:12:04.390 

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

Ответы

Ответ 1

Трудно сказать, что происходит на вашем другом сервере, но вот простой контрольный список, который вы, возможно, захотите пересмотреть:

  • Всегда предварительно компилируйте свой сайт, а не копируйте его! вы можете получить значительное повышение производительности, составляя ваш сайт перед развертыванием: Обзор прекомпиляции ASP.NET

  • Не запускайте производственное приложение с включенным debug="true", когда флаг debug равен true в вашем web.config. В приложении во время работы используется гораздо больше памяти, и поскольку некоторые дополнительные пути отладки включены, коды может выполнять гораздо медленнее

  • Проверьте файл Web.config, чтобы убедиться, что трассировка отключена в разделе <trace>

  • IIS 7.5 поставляется с функцией автозапуска. WAS (Служба активации Windows) запускает все пулы приложений, которые настроены для запуска автоматически, убедитесь, что ваш пул приложений настроен на AlwaysRunning в IIS 7.5 applicationHost.config, подробнее

  • Просмотрите файл ASPNET.CONFIG, чтобы узнать, не совпадает ли конфигурация на обоих серверах. Каждый сервер asp.net может быть хорошо настроен файлом ASPNET.CONFIG, находящимся в корневой папке фреймворка

  • Убедитесь, что в вашем файле aspnet.config установлено значение "Доказательство для обеспечения безопасности доступа к коду (CAS)". Это может увеличить загрузку начальной страницы при перезапуске пула приложений ASP.NET. вы можете прочитать подробнее об этом здесь.

Здесь, как отключить проверку политики издателя CAS для приложения:

<configuration>
    <runtime>
        <generatePublisherEvidence enabled="false"/>
    </runtime>
</configuration>
  • также вы можете попробовать Модуль инициализации приложений для IIS 7.5, этот модуль, также доступный в IIS 8.0, может уменьшить время отклика для первых запросов путем предварительной загрузки рабочих процессов.