Значительное снижение производительности при переходе с Windows Server 2003 на 2008 (с IIS 6 до IIS 7) - PullRequest
3 голосов
/ 30 августа 2009

Наше веб-приложение ASP.Net 2.0 успешно работало на Windows Server 2003. Мы начинали видеть некоторые из приближающихся ограничений среды, такие как скачки памяти и использования ЦП, и когда мы готовились к масштабированию мы решили, что пришло время для более крупного сервера с более высокой доступностью.

Мы решили перейти на Windows Server 2008, чтобы воспользоваться преимуществами общей конфигурации IIS 7. В наших средах разработки и интеграции мы воспроизвели ОС и приложение в 2008 / IIS 7, и все выглядело нормально. Но, по правде говоря, пока нет хорошего способа моделирования производственных нагрузок, и мы не можем точно воспроизвести нашу рабочую среду (мы малы с ограниченными ресурсами). Поэтому, как только мы приступили к производству, мы были удивлены, обнаружив, что производительность в 2008 году значительно хуже, чем в 2003 году.

Мы также перешли от 32-битной среды к 64-битной в процессе, и мы также включили ASP.Net 3.5 DLL в проект.

Использование памяти зашкаливает, но я не так беспокоюсь об этом. Отчасти мы полагаем, что это связано с перегрузкой памяти в Server 2008, поэтому использование большего объема оперативной памяти может решить эту проблему. Вызывает беспокойство то, что мы наблюдаем резкий скачок загрузки процессора до 99%, чего мы никогда не видели в среде 2003 / IIS 6.

Кто-нибудь сталкивался с этими проблемами раньше, и есть ли предложения по поиску решения / мест? Прямо сейчас мы делаем следующее:

1) Время покупки путем добавления памяти.

2) Время покупки путем установки пределов пула приложений: завершите работу w3wp.exe, когда загрузка процессора достигнет 99%. Поскольку у вас нет возможности перезапускать пулы приложений, у меня запущена запланированная задача, которая перезапускает все остановленные пулы приложений.

3) Профилирование пулов приложений в классическом и интегрированном режимах, чтобы определить, какие из них могут работать лучше.

Любые другие идеи полностью приветствуются.

Ответы [ 3 ]

1 голос
/ 30 августа 2009

Наш опыт показывает, что код работает на 64-битной Windows 2008 намного быстрее, чем на 32-битном сервере Windows 2003.

Мне интересно, работает ли что-то еще на машине. Например, установлен ли SQL Server с планом обслуживания, который может вызвать скачок ЦП.

Я бы проверил следующее:

  • Какой процесс использует процессор?
  • Есть ли изменения в коде? Попробуйте установить новый код на старой машине
  • Это как-то связано с опциями компиляции? Использование ЦП перекомпилируется?
  • Есть ли ошибки в журнале событий?
0 голосов
/ 05 ноября 2009

Вы можете использовать опцию «Перезапуск» пула приложений в IIS7 + для настройки ограничений физической и виртуальной памяти для пулов приложений. Как только они достигнуты, процесс перезапустится и ресурсы будут освобождены. К сожалению, возможность утилизации на основе использования CUP была удалена из IIS7 + (кто-то поправляет меня, если я ошибаюсь). Если у вас есть другие приложения на сервере, и вы хотите избежать их конкуренции за ресурсы при возникновении этого условия, вы можете реализовать диспетчер системных ресурсов Windows и его политику IIS (вот хорошее руководство http://learn.iis.net/page.aspx/449/using-wsrm-to-manage-iis-70-apppool-cpu-utilization/)

Примечание. SRWM доступен только в версиях Enterprise и Data Center.

0 голосов
/ 20 октября 2009

В наших случаях, поскольку у нас 4 процессора, мы увеличили количество рабочих процессов до 4 ", которые в настоящее время работают хорошо, по сравнению с предыдущим.

вот снимок: http://pic.gd/c3661a

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