#asp.net #load-balancing
#asp.net #балансировка нагрузки
Вопрос:
Одна проблема с ASP.NET приложения периодически перезагружаются сами, вызывая длительную задержку и, возможно, тайм-аут для пользователей, которые заходят на сайт в течение этого времени.
Возможно, это не проблема для небольших веб-сайтов, но может привести к значительному простою для сайтов с высоким трафиком, если пользователи случайно перенаправляются на узел в веб-ферме, который перезапускается.
Предварительная настройка может помочь, но для веб-сайтов с большим количеством страниц задержка все равно неизбежна.
Могут ли балансировщики нагрузки каким-то образом «знать», является ли ASP.NET домен приложения на определенном сервере перезапускается? Затем они могут маршрутизировать трафик вокруг этого сервера до тех пор, пока приложение не завершит перезапуск.
В настоящее время мой балансировщик нагрузки выполняет пинг простой страницы .aspx на сайте. Если происходит задержка или страница не загружается, хост выводится из ротации. Возможно ли выполнить более целенаправленную проверку работоспособности, возможно, на уровне IIS, а не ASP.NET уровень?
Ответ №1:
Если вы используете IIS7, вы могли бы заглянуть в модуль прогрева приложения, чтобы запустить ваше приложение даже после сброса AppPool.
http://learn.iis.net/page.aspx/688/using-the-iis-application-warm-up-module/
Комментарии:
1. Интересно, однако, что нет упоминания о балансировщиках нагрузки или проверках работоспособности.
Ответ №2:
Как IIS6, так и IIS7 поддерживают планирование перезапуска пула приложений через фиксированное время / интервалы. Если ваш балансировщик нагрузки может выводить узлы по расписанию, вы могли бы синхронизировать два расписания.
Вы также можете принудительно выполнить перезапуск из балансировщика нагрузки программно, взгляните на http://blog.developers.ie/cgreen/archive/2006/10/20/2341.aspx для 2 вариантов.
Конечно, они не будут обрабатывать случаи, когда пул приложений перезапускается по другим причинам.