Як обмежити пам'ять, яку використовує програма в IIS?


17

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

Якщо я встановив обмеження приватної пам'яті на 500 МБ, а віртуальну - 3 ГБ. Коли пул додатків переробляється? Чи переробляється після досягнення 500MB або після досягнення 3GB.


Де ці параметри «Обмеження віртуальної пам’яті» та «Обмеження приватної пам’яті», про які ви говорите?
Полковник Паніка

1
@ColonelPanic У IIS7.5 вони знаходяться в розділі пулу додатків Advanced Settings -> Recycling.
ngm

Відповіді:


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. Хтось може порекомендувати вивчити якісь хороші ресурси з цієї теми? Я хотів би зрозуміти більше про те, як і чому це відбувається ... Що я зауважую, це те, що чим більше пам’яті доступно, тим більше пам’яті виділяють програми.
Том Пажорек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.