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