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

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

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

Вот немного предыстории:

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

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

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

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

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

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

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

13.08.2008 06:04:52
Я предполагаю, что у вас есть возможности ведения журналов из IIS и / или вашего приложения? Когда проблемы начинаются, что именно происходит, что вызывает это? Как это отличается от того, что имитирует ваше нагрузочное тестирование?
Andrew Grant 13.08.2008 06:17:37
У меня та же проблема, посмотрите на ваши журналы производительности vmware, посмотрите на память за месяц или два, для нас это происходит каждые 8-10 дней, когда у нас было меньше оперативной памяти, это было каждые шесть дней. Похоже, что есть утечка памяти. У нас точно такой же веб-сайт работал на реальном физическом сервере без проблем, похоже, это проблема с IIS и vmware. Чтобы ответить на ваш вопрос, попробуйте запустить инструмент загрузки на некоторое время (недели) и настроить трассировку на тестовом сервере. Если вы найдете решение, пожалуйста, напишите, я никуда не попал.
Mike 10.09.2008 15:31:01
3 ОТВЕТА

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

1
13.08.2008 06:13:21

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

1
13.08.2008 06:14:11

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

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

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

Правильно ли .Net Config?

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

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

0
13.08.2008 07:26:33