Репликация сбоев, связанных с нагрузкой, в непроизводственных средах - PullRequest
4 голосов
/ 13 августа 2008

Мы запустили пользовательское приложение в нашей интрасети, и после недавнего обновления мы обнаружили проблему, когда IIS зависает при 100% загрузке ЦП и требует сброса.

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

Вот немного фона:

Prod имеет один виртуальный (vmware) веб-сервер с двумя процессорами и 2 ГБ оперативной памяти. Сервер базы данных имеет 4 ГБ и 2 процессора. Это также на VMWare, но отдельное физическое оборудование.

При нормальном использовании приложение работает нормально. Процесс w3wp.exe обычно использует 5-20% ЦП и около 200 МБ ОЗУ. Процессор и оперативная память слегка колеблются при нормальном использовании, но ничего необычного.

Однако, когда мы начинаем сталкиваться с проблемами, ОЗУ резко возрастает, а ЦП привязывается к 98% (или столько, сколько может получить). Сайт перестает отвечать на запросы, что требует перезапуска IIS. Сброс пула приложений ничего не делает в этой ситуации, требуется полная перезагрузка IIS.

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

Первый шаг к решению этой проблемы - ее воспроизведение. Чтобы имитировать нагрузку, мы начали использовать JMeter для имитации использования. Наш скрипт загрузки основан на фактическом использовании во время сбоя. Используя JMeter, мы можем нарастить использование довольно высоко (в 2-3 раза больше нагрузки во время сбоя), но сайт ведет себя нормально. Процессор высок, и сайт становится вялым, но использование памяти разумно, и ничего не зависает.

У кого-нибудь есть советы, как воспроизвести проблему, подобную этой, в непроизводственной среде? Нам бы очень хотелось воспроизвести ошибку, определить решение, а затем снова протестировать, чтобы убедиться, что мы ее исправили. В ходе этого процесса мы обнаружили несколько небольших улучшений, которые могут решить проблему, но я действительно чувствовал бы себя намного увереннее, если бы мы могли воспроизвести проблему и протестировать улучшенную версию.

Любые инструменты, методы или теории высоко ценится!

Ответы [ 3 ]

1 голос
/ 13 августа 2008

У меня есть статья об отладке ASP.NET в работе , которая может содержать некоторые указатели.

1 голос
/ 13 августа 2008

Информацию об устранении неполадок такого рода можно найти на этой записи в блоге . Ее блог - хороший ресурс для отладки.

0 голосов
/ 13 августа 2008

Ваш тестовый env такой же, как вживую? т.е. 2 отдельных экземпляра vm на 2 физических серверах - с сетевым подключением и типами учетных записей?

Есть ли другие экземпляры в базе данных?

Есть ли в IIS другие веб-приложения?

.Net Config подходит?

Правильно ли настроен пул приложений для учетных записей служб? Попробуйте взглянуть на это - статья MS о II6 Optmising for Performance

Много трюков.

...