У нас есть сайт на 4 виртуальных 64-битных серверах Win 2008 R2. (Поверх физических серверов Hyper-V)
Это единственный сайт в IIS, и мы используем балансировку сетевой нагрузки Windows для распределения нагрузки между нашими 4 виртуальными серверами.
Мы использовали эти виртуальные серверы примерно неделю и начинаем замечать некоторые проблемы.
По непонятной причине IIS перестает обслуживать страницы и даже не отвечает с ошибкой. Таким образом, при запросе страницы с сервера браузер просто ждет бесконечно (или пока он не решит отказаться от клиентской части).
Иногда iisreset решает проблему, в других случаях нам нужно перезагрузить весь виртуальный сервер.
В журнале событий нет никаких следов того, почему это происходит, как и следов в журнале исключений наших приложений.
Более того, это происходит даже при очень небольшой нагрузке на сервер, поэтому похоже, что это не так, потому что он переполнен запросами.
Так что, честно говоря, я здесь в растерянности - я не знаю, с чего начать отладку этой проблемы :-(
Я совершенно уверен, что у нас никогда не было этих проблем на наших физических серверах, однако они работали под управлением Win 2003 32bit, поэтому между ними и виртуальными есть несколько различий. (Что, очевидно, затрудняет определение того, что именно вызывает это)
Какое приложение размещено на IIS 7?
Если это веб-сайт .net и страницы не работают с клиентской машины даже после прямого обращения к серверу, я предлагаю удаленный рабочий стол на сервере и просматривать страницу непосредственно с самого сервера.
Если вы по-прежнему не можете просматривать свой веб-сайт с самого сервера, попробуйте просмотреть простую страницу .html и посмотрите, работает ли это. Если страница .html работает, попробуйте получить доступ к странице .aspx, которая не выполняет никаких вызовов базы данных, и посмотрите, работает ли она. Если простая страница .aspx не работает, значит, проблема в конвейере .net. Вероятно, ваши запросы помещаются в очередь, и поэтому веб-сайт не отвечает.
Откройте Perfmon и добавьте счетчики для ASP.NET
объект. Проверить Request Queued
и Request Execution Time
, если вы видите там какое-либо значение, то ответ - ваши запросы поставлены в очередь.
Если это не так, то трассировка ETW поможет вам получить некоторую информацию о том, что происходит с вашими запросами .aspx.
Проверить это для Трассировка трассировки событий Windows