Инцидент производительности IIS / ASP.NET - текущие анонимные пользователи Perfmon проходят через крышу, но количество запросов / сек низкое

1

Установка: веб-сайт ASP.NET 4.0 на IIS 6.0 на 64-разрядной версии Win 2003, 8xCPU, 16 ГБ памяти, отдельный сервер БД SQL 2005.

Сегодня произошел серьезный спад с любым другим достаточно хорошо работающим сайтом ASP.NET. В течение пары часов все запросы страниц обрабатывались очень долго - например, 30-60 с по сравнению с обычными 2 с. Использование ЦП и памяти w3wp.exe на веб-сервере было не намного выше обычного. Пул приложений не находился в процессе переработки (и не перерабатывался в течение нескольких часов). Узкие места в базе данных были исключены - блоки не возникали, и результаты запроса возвращались быстро. Я не мог понять это и настроил следующие счетчики Perfmon:

  • Текущие анонимные пользователи (для рассматриваемого сайта)
  • Получать запросы / сек (так же)
  • Запросов / сек для приложения ASP.NET, на котором работает сайт

Получение запросов / сек составляло в среднем 100-150. Число запросов в секунду для ASP.NET составляло в среднем 5-10. Тем не менее, текущим анонимным пользователям было около 200. А потом, пока я смотрел, текущие анонимные пользователи начали круто подниматься, приближаясь к 500 в течение нескольких минут. Все это время запросов Get / sec & Requests / sec для ASP.NET было, если что-нибудь происходит.

Я сделал целую кучу вещей (в панике!), Чтобы попытаться заставить сайт работать, например, закрыть его, переработать пул приложений и добавить еще один рабочий процесс в пул. Я также продлил срок действия контента (в IIS под заголовками HTTP), чтобы уменьшить количество запросов на статические файлы (на сайте много изображений).

Теперь сайт вернулся к нормальному состоянию, и счетчики довольно стабильны и читают (добавлен счетчик текущих подключений):

  • Текущие анонимные пользователи: в среднем 30
  • Получать запросы / сек: в среднем 100
  • Запросов / сек для ASP.NET: 5
  • Текущие соединения: в среднем 300

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

Итак, мои вопросы:

Думая о первоначальной проблеме с производительностью - если ЦП w3wp.exe, использование памяти было нормальным и не было узкого места в БД, что могло бы объяснить, что запросы страниц занимали в 20 раз больше времени, чем обычно? На какие еще счетчики мне следует обратить внимание, если это произойдет снова?

Чем объясняется обратная связь между запросами Get / сек и текущими анонимными пользователями?

Что могут объяснить текущие анонимные пользователи от 200 до 500 в течение нескольких минут?

Большое спасибо за понимание этого.

Лоренс
источник

Ответы:

0

Нашли ответ на вопрос Что объясняет обратную связь между запросами Get / сек и текущими анонимными пользователями ? здесь: http://www.it-notebook.org/iis/article/current_connections_users.htm

Текущие анонимные пользователи - это измерение активных анонимных запросов, обрабатываемых в данный момент. Как только запрос обработан (что обычно происходит довольно быстро), «Текущие анонимные пользователи» уменьшается .

Таким образом, если обработка запросов занимает много времени, число запросов Get / сек будет снижено, а количество текущих анонимных пользователей увеличится.

Лоренс
источник