Как ограничить память, используемую приложением в IIS?

17

Рабочие процессы IIS занимают много памяти на наших серверах. Я хочу ограничить память, которую может использовать каждое приложение. Я запутался, стоит ли мне устанавливать ограничение на ограничение виртуальной памяти или ограничение на частную память. Каждое приложение в нашем IIS находится в собственном пуле приложений.

Если я установлю ограничение частной памяти на 500 МБ и ограничение виртуальной памяти на 3 ГБ. Когда происходит перезапуск пула приложений? Перерабатывает ли он после достижения 500 МБ или после достижения 3 ГБ.

Кишор
источник
Где эти опции «Ограничение виртуальной памяти» и «Ограничение частной памяти», о которых вы говорите?
полковник Паник
1
@ColonelPanic На IIS7.5 они находятся в разделе пула приложений Advanced Settings -> Recycling.
НГМ

Ответы:

16

IIS будет соблюдать оба этих ограничения.

Если вы установите ограничение в 500 МБ для частного байта, как только рабочий процесс попытается зафиксировать 501 МБ, IIS раскрутит новый рабочий процесс и уничтожит старый.

Если вы установите ограничение в 3 ГБ виртуальной памяти, как только рабочий процесс попытается зарезервировать 3.001 ГБ, IIS раскрутит новый рабочий процесс и уничтожит старый.

Если вы работаете на 64-битной платформе, вы должны знать, что приложение ASP.NET активно резервирует виртуальную память. Например, у меня есть приложение на ферме, которое использует только 88 МБ частных байтов, но сейчас оно имеет виртуальный размер 5,4 ГБ. Я считаю, что резервирование виртуальной памяти является функцией физической памяти на сервере. Также важно понимать, что на 64-битной платформе резервирование больших объемов виртуальной памяти не влияет на производительность.

В основном, если у вас есть проблемы с использованием памяти на сервере IIS, параметр, который вы хотите ограничить, это частная память / байты, это то, что соответствует фактическому использованию памяти.

Доминик Д
источник
Спасибо, Доминик, есть ли способ, которым мы можем настроить процесс на использование 500 МБ приватной памяти и, если он превысит этот предел, начать использовать виртуальную память на диске без перезапуска?
Кишор
2
Не то, чтобы я знал. В приложении ASP.NET, когда вы начинаете испытывать проблемы с байтами, у вас есть 3 варианта. 1. Перезапустите процесс, когда вы достигнете предела или еженедельно в нерабочее время (очевидно, не рекомендуется, и не забывайте правильно управлять данными сеанса при перезапуске во время окна использования) 2. Получите дополнительную физическую память для приложения (добавьте ОЗУ на ферму серверов или на другую ферму, это может быть самым простым решением в зависимости от вашей ситуации). 3. Измените приложение так, чтобы оно использовало память более эффективно. (Лучший вариант, но может быть сложным для реализации)
Доминик Д
Я также заметил агрессивное резервирование памяти в нескольких приложениях ASP.NET. Кто-нибудь может порекомендовать хорошие ресурсы по этой теме для изучения? Я хотел бы больше узнать о том, как и почему это происходит ... Я наблюдаю, что чем больше доступно памяти, тем больше памяти выделяют приложения.
Том Пажурек