Наше веб-приложение 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) Профилирование пулов приложений в классическом и интегрированном режимах, чтобы определить, какие из них могут работать лучше.
Любые другие идеи полностью приветствуются.