IIS Express localhost загружается очень медленно для первого запроса - PullRequest
0 голосов
/ 16 октября 2018

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


Проблема:

  • Я создаю совершенно новое приложение ASP.NET MVC, создаю приложение и запускаю его -> Загрузка страницы занимает от 20-30 секунд .
  • Каждый раз, когда я перестраиваю приложение и затем пытаюсь загрузить страницу, это занимает 20-30 секунд , даже если я делаю это сразу после предыдущей сборки (т. Е. Не возникает проблема простоя,угадайте?).

Я боролся с этой проблемой со вчерашнего дня, я прочитал все посты / статьи, которые я мог найти по этому поводу, но не повезло.Однако я должен признать, что я новичок в ASP.NET и веб-разработке в целом и не знаком с конфигурацией IIS, поэтому я мог что-то упустить.

То, что я пробовал:

  • Отключен антивирус и брандмауэр.

  • Отключен IPv6, комментируя строку ::1 localhost в файле hosts.Мой файл hosts выглядит следующим образом:

    127.0.0.1       localhost
    # ::1             localhost
    
  • Пробовал разные браузеры.

  • Изменен порт URL приложения.

  • Изменен URL-адрес приложения с localhost:port на 127.0.0.1:port, но при этом я получаю:

    Неверный запрос - неверное имя хоста

  • Деинсталлирован и переустановлен IIS Express (пробовал несколько версий: 7.5, 8.0 и 10.0).

  • Попытался установить «Возможности разработки приложений» в Internet Information Services\World Wide Web Services.

  • Запустил установщик VS и запустил ремонт.

Информация об окружающей среде:

  • Windows 7 x64.
  • Visual Studio 2015.
  • .NET 4.5.2.
  • В настоящее время включены функции IIS: Я использую IIS Express, поэтому яЯ не уверен, если это связано.

IIS enabled features

Есть идеи, что может быть причиной этой проблемы?


Обновление:

Я только что попробовал использоватьJexus Manager.Загрузил конфигурацию из файла .sln, как показано здесь , запустил веб-сайт и попробовал следующие сценарии:

  • Просмотр веб-сайта после его перезапуска (оба действия в Jexus Manager) -> 15-20 секунд.
  • Просмотр веб-сайта (с использованием Jexus) после перестройки решения в VS -> 30+ секунд.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Это может быть по следующим причинам:

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

Существует хорошо замаскированная опция, называемая Действие времени ожидания простоя , которую можно изменить в дополнительных настройках пул приложений .Операция time-out по умолчанию установлена ​​на Завершить , что означает, что процесс Windows, на котором размещен сайт, будет прерван.Если происходит такое завершение, сайт должен быть построен, и процесс должен быть запущен при следующем посещении, что приводит к очень медленной первоначальной загрузке.

Если вы используете выделенный сервер только для вашего сервиса или для небольшого количества сайтов, то это явно ограничивает ваш стиль.Установка этого значения в 0 - это лучший способ в этих случаях.Другие утверждают, что 1740 минут.Зачем?это наименьшее простое число (в часах) свыше 24.

для изменения действия Время ожидания простоя на 0 в Microsoft Windows Server 2012 R2, доступ к IIS и выбор пула приложенийобслуживая ваш сайт и в меню справа выберите «Дополнительные настройки», найдите параметр «Время простоя (минуты)», измените его на 0 и нажмите ОК.

Другое возможное решение : установитьфункция IIS Инициализация приложения .Затем он должен работать с этой конфигурацией:

  • установите режим запуска на AlwaysRunning в пуле приложений
  • Предварительная загрузка включена на True на уровне сайта.
0 голосов
/ 18 октября 2018

При первом запуске приложения Asp.Net MVC происходит много вещей, поэтому я не могу точно определить одну вещь, которая может стать причиной узкого места, но попробуйте следовать советам, которые могут помочь вам улучшить время запуска вашего приложения.веб-приложение:

  1. Всегда запускайте свое веб-приложение из Visual Studio в режиме выпуска (я знаю, что вы это знаете, но все еще должен его поставить)
  2. Проверьте файл web.config иубедитесь, что System.Web\compilation имеет debug=false
  3. Проверьте метод Application_Start в файле Global.asax.cs для удаления ненужных вызовов
  4. Представления бритвы по умолчанию компилируются во время выполнения, так что если вы нене делайте никаких изменений в вашем представлении во время выполнения, убедитесь, что вы предварительно компилируете свои виды бритвы, лучше, если бы вы могли использовать RazorGenerator для компиляции ваших представлений.
  5. Профилируйте ваше приложение, используяprofiler, Glimpse например.

Надеюсь, это придаст вашему приложению некоторый импульс при запуске.

...