У меня Windows Server 2008 SP2 EE x86 с 6 ГБ памяти. На IIS7 работает 10 пулов приложений. Какой объем памяти можно использовать для всех 10 пулов приложений и каждого пула приложений по отдельности? Каковы ограничения, при которых мои приложения будут генерировать исключения OutOfMemoryExceptions?
И как лучше всего отслеживать производительность и доступные бесплатные серверные ресурсы для пулов приложений IIS7? Я попытался использовать монитор производительности по умолчанию и счетчики производительности процессов (частные байты, виртуальная память, рабочий набор), которые являются идентификаторами по индексу, но я не могу связать эти счетчики с текущими пулами приложений в реальном времени.
Каждый пул приложений может использовать до 2 ГБ частного адресного пространства, если вы не играли с такими параметрами BCDEDIT, как 3 ГБ.
Если бы все 10 использовали все 2 ГБ, вы были бы в аду подкачки.
Ваш вопрос в более общем плане касается того, как процессы могут выделять память в Windows - я брошу вам некоторую терминологию для дальнейшего исследования.
Частные байты - это объем памяти, уникально загруженный для процесса. Виртуальные байты - это общий объем памяти, выделенный процессом. Рабочий набор - это то, сколько оперативной памяти фактически используется процессом.
Зарезервированная память - память, предназначенная для использования приложением, но на самом деле еще не имеющая поддержки ОЗУ / файла подкачки. Выделенная память - память с резервной копией.
Теперь вопрос становится более сложным, когда вы добавляете фреймворки приложений, такие как .Net, в - .Net имеет рабочий максимум менее 2 ГБ, прежде чем произойдет OutOfMemoryExceptions. И, как правило, по моему опыту, этого не произойдет в приложении, которое либо не пропускает что-либо, либо находится под большей нагрузкой, чем оно может справиться.
Perfmon со счетчиками процессов - это обычно все, что вы можете делать с пулами приложений; вы можете включить опцию добавления PID в имя процесса, если это помогает, и APPCMD LIST WP регулярно, чтобы записывать, какой пул приложений что делает.