Большое количество тайм-аутов запросов на IIS - PullRequest
3 голосов
/ 26 апреля 2011

У меня довольно загруженный сайт, который просматривает около 10 м в месяц.

Один из моих пулов приложений, похоже, завис в течение нескольких часов, и я искал несколько идей о том, как его устранить..?Я подозреваю, что в нем как-то закончились темы, но я не уверен, как определить это задним числом ..?Вот что я знаю:

  • Сайт никогда не отключался, но около 90% запросов начали истекать.
  • Я вижу большое количество "HttpException - Request timedиз."в журнале во время сбоя
  • Я не могу найти никаких ошибок SQL или ошибок кода, которые вызвали бы тайм-ауты.
  • Тайм-ауты, по-видимому, были общими для всех страниц.
  • Была одна страница с ошибкой, которая могла привести к ошибкам на этой конкретной странице.
  • Необходимо перезапустить сайт.

Сайт ASP.NET C # 3.5 WebForms ..

Возможности:

  1. Истечение потока: Я думаю, что страницаможет быть причиной того, что ошибка стала причиной заклинивания доступных потоков?
  2. Глобальная ошибка кода: Другая возможность состоит в том, что в одном из моих статических классов есть необнаруженная ошибкагде-то.Это маловероятно, поскольку этого никогда не было, и я не могу найти никаких ошибок журнала для этих классов, но это возможно.

ОБНОВЛЕНИЕ

Мне удалось отследить проблему сейчас, пока она возникает.Страницы загружаются нормально, но по некоторым причинам WebResource.axd и ScriptResource.axd оба занимают минуту, чтобы загрузить .В счетчиках производительности я вижу пики очереди запросов ASP.NET на этом этапе.

1 Ответ

3 голосов
/ 26 апреля 2011

Первое, что я попробую, - это инструмент анализатора ЦП Сэма Саффрона , который должен дать указание, если есть что-то общее, что происходит слишком много / слишком долго.Частично, потому что это не вовлекает никаких изменений;просто запустите его на сервере.

После этого доступны различные другие инструменты отладки;мы обнаружили, что некоторые очень гетто-подходы могут быть безумно эффективными, когда видят, сколько времени потрачено (конечно, это будет работать только на 10% успешных результатов).

ВыМожно, конечно, просто открыть инструменты профилирования сервера и перетащить их на различные счетчики .NET / IIS, которые могут помочь вам определить некоторые вещи.

Между этими тремя вариантами вы должны быть покрыты:

  • код падает в черную дыру и никогда не выходит (обычно связанный с потоками)
  • код работает , но слишком медленно (обычно связанный с доступом к данным)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...