IIS время от времени начинает выдавать ошибки 503 и никогда не восстанавливается без перезапуска пула приложений - PullRequest
0 голосов
/ 21 мая 2018

Цель

Найти способ заставить IIS сообщать об основной причине ошибок 503.

Проблема

Спорадически в нашей производственной среде IIS начнет сообщать об ошибках 503для каждой конечной точки на нашем веб-сайте ASP.NET MVC.После запуска он, кажется, не восстанавливается без перезапуска пула приложений.Стоит отметить, что в диспетчере IIS пул приложений все еще работает , и я неоднократно обновлялся как проверка работоспособности.

Настройки

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

Удаленная диагностика

  • Посмотрел протоколирование всех наших исключений, но это ничего не выдало.Мы видим, что исключения генерируются, но они также обрабатываются.
  • Посмотрел ошибки в журнале событий, и они не являются ошибками для IIS, ASP.NET или .NET Runtime.Я просмотрел остальную часть журнала событий и не смог найти ничего, что торчало.Я также говорил с нашей системной командой о том, чтобы убедиться, что у него есть привилегии для записи в журнал событий просто для безопасности.
  • Включил отслеживание сбоя запроса и проверил журналы.Мне удалось найти только сообщение «1033 *», вызвавшее 500. Я не нашел явно документации, в которой говорилось бы, что это правильно, но я предполагаю, что Operation completed successfully относится к сообщению о проблеме клиенту.

  • Изучил трафик с нашего прокси на серверы с балансировкой нагрузки, на которых размещаются сайты.Мы используем HAProxy, а я использовал Graylog для агрегирования и изучения данных.Даже в часы пик трафика ничто не занимало более нескольких миллисекунд, но как только проблема возникла, многие запросы будут резервироваться в HAProxy и начнут значительно замедляться.Конечные точки, похоже, не имеют отношения к проблеме, и даже когда я смотрю на первый запрос, чтобы начать проблему, они не всегда одинаковы.

Локальная диагностика

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

  • Вручную выкинул ThreadAbortException.В случае прерывания потока журнал невыполненных запросов был тем же, но пул приложений был остановлен, поэтому в производственной среде это не те же симптомы.
  • Установите для длины очереди пула приложений значение 10 (для производственных и локальных компьютеров).1000).Затем использовал JMeter, чтобы загнать мою локальную машину с ~ 800 запросами в секунду.Это вызвало точно такие же симптомы.К сожалению, даже введение второго работника (наше производство состоит из 2 работ и с балансировкой нагрузки) привело к тому, что эта проблема перестала проявлятьсяЯ еще не нашел средства, чтобы определить, достигаем ли мы ограничения на длину очереди.Я посмотрел на счетчики производительности, но они, похоже, не совпадают с трафиком, который я вижу в GrayLog.

Закрытие единственной вещи, которая даже отдаленно напоминала то, что я видел в производствеэто случай 2 моей локальной диагностики.Несмотря на это, я не нашел способа заставить IIS создать журнал с информацией, указывающей на это.

1 Ответ

0 голосов
/ 29 мая 2018

При работе с проблемами, исправлением которых является IIS RESTART или перезапуском пула приложений IIS, я бы рекомендовал загрузить windbg , создавая дамп памяти вашего пула приложений IIS, когда он находится в проблемном состоянии.и идти оттуда.Вообще говоря, для решения вышеперечисленных проблем лучше всего проанализировать дамп памяти, и вы можете быть уверены в том, в чем проблема.

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