Назад | Перейти на главную страницу

IIS 8 - инициализация приложения и развертывание веб-сайта без простоев

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

Есть ли способ «разогреть» веб-сайт без простоя пользователя. Похоже, что инициализация приложения делает это в определенной степени, но было бы намного лучше, если бы я снова развернул веб-сайт, на котором IIS продолжал работать в текущем процессе, пока инициализация приложения запускалась, а затем передавалась новому процессу. Это то, что он должен делать?

Есть ли альтернативы этому затруднительному положению? Мы пробовали предварительно скомпилировать представления, используя https://github.com/RazorGenerator/RazorGenerator но столкнулись с некоторыми проблемами, связанными с вложенными представлениями.

Делаем это следующим образом:

  1. (Самый простой) Один сервер, одно приложение с инициализацией приложений. Сразу после развертывания wget в режиме паука отправляется для посещения всех страниц сервера до 3-го уровня с домашней страницы. Это не приносит мне таких блестящих 15 секунд простоя (обычно сайт работает медленно или показывает страницу App_offline до 3 минут), но все же - после развертывания у нас есть хорошее приложение со всеми страницами в кеше.
  2. (лучше для стабильности) 2 или более серверов за балансировщиком нагрузки (Microsoft NLB в порядке, но подойдет любой другой). Каждый сервер перед развертыванием отключается LB, затем запускается развертывание и после его завершения на этом конкретном сервере - wget в режиме паука на сервере посещает все страницы, а сервер возвращается в LB.

Есть много рекомендуемых способов решения этой проблемы, многие из которых, похоже, вы уже нашли. В конечном счете, с IIS лучшим вариантом является наличие нескольких компьютеров с балансировщиком нагрузки. Затем администратор или конфигурация балансировщика нагрузки могут определить, при каких условиях следует использовать каждый сервер. Это решение имеет дополнительное преимущество: вы получаете защиту от аппаратных сбоев веб-сервера, а также повышенную масштабируемость. Также можно использовать программный балансировщик нагрузки (например, Microsoft NLB, который поставляется с серверными версиями Windows), но для этого может потребоваться немного программирования и внешний контроллер, если вы хотите автоматически удалять серверы во время обслуживания.