IIS 7.x Найкращі практики застосування пулу


24

Ми збираємося розмістити купу сайтів на деяких нових серверах. У мене є такі питання щодо пулів додатків:

  1. Здається, доцільно мати один пул додатків на веб-сайті. Чи є якісь застереження до цього підходу? Чи буде один пул додатків зависати всім процесором, пам'яттю, тощо ...?

  2. Коли ви повинні дозволити кілька робочих процесів у пулі додатків? Коли ви не повинні?

  3. Чи можна використовувати обмеження приватної пам'яті, щоб один пул додатків не втручався в інший? Чи встановлення цього занадто низького рівня викликатиме дійсні запити на переробку пулу додатків, не отримуючи дійсної відповіді?

  4. Яка різниця між обмеженнями приватної та віртуальної пам'яті?

  5. Чи є вагомі причини НЕ запускати один пул додатків на сайті?


Перше запитання до вас: це веб-сайти (тобто: .htm / .js) або веб-додатки (тобто .aspx / .php)?
Кодування Горілла

Переважно .Net 3,5 додатків. Один - стороннє додаток PHP.
Ерік Бурхам

1
Це свого роду широке коло тем - Тема (і відповіді @ CodingGorilla) цікаві, але це може бути не найкращим чином для стилю Q-і-A SF
voretaq7

Відповіді:


20

1) Мабуть, доцільно мати пул додатків для кожного веб-сайту. Чи є якісь застереження до цього підходу? Чи може один пул прикладних програм, наприклад, загорнути весь процесор, пам'ять, тощо ...?

Це досить хороший підхід; немає жодних вагомих причин, з яких я можу подумати, що різні "сайти" (додатки) мають один і той же пул. Якщо їм не потрібно спільно використовувати окремий ресурс. Один додаток теоретично може завищити багато процесора чи пам’яті, але зміна способів об’єднання програм не дуже вплине на це.

2) Коли слід дозволити кілька робочих процесів у пулі додатків. Коли ви не повинні?

Це найкраще залишити в спокої, використовуючи налаштування за замовчуванням. Якщо ви дійсно не знаєте, що ви робите, це насправді може негативно вплинути на ваш веб-сайт / додаток.

3) Чи можна використовувати обмеження приватної пам’яті, щоб один пул додатків не втручався в інший? Чи встановлення цього занадто низького рівня викликатиме дійсні запити на переробку пулу додатків, не отримуючи дійсної відповіді?

а) Теоретично

b) Так, встановлення його нижчого значення може мати негативні наслідки. Знову ж таки, якщо у вас немає конкретних потреб і не знаєте, що ви робите, просто залиште їх у спокої.

4) Яка різниця між обмеженнями приватної та віртуальної пам'яті?

Це дуже складно, ось я знайшов короткий пост, який може допомогти: http://cybernetnews.com/cybernotes-windows-memory-usage-explained/

5) Чи є вагомі причини НЕ запускати один пул додатків на одному сайті?

Знову ж таки, єдиною причиною, про яку я можу подумати, є те, якщо є якийсь "спільний ресурс", який потребує декількох додатків, то ви хочете запустити їх в одному процесі.

Для додатків загального призначення та веб-сайтів IIS досить добре налаштований з його значеннями за замовчуванням.

**** ОНОВЛЕННЯ ****

Що стосується вашого запиту на додаткову інформацію на №2, ви не повинні робити цього, якщо у вас немає конкретної необхідності. Навіть із діями сервера, що займають тривалий час, запити подаються за допомогою декількох потоків, і ви хочете використовувати "Запити на асинхронізацію" для обробки тривалих завдань (що звільняє нитку пулу потоків для обробки інших запитів). Реально я не можу придумати жодної вагомої причини, щоб дозволити кілька процесів для одного пулу.

Після того, як ви починаєте говорити про декілька процесів, ви, можливо, зіткнетеся з такими речами, як: втрата стану сеансу, оскільки сесія жива в процесі 1, але запит обробляється процесом 2. Або ще гірше, ви повинні зрозуміти, як це зробити зайнятись міжпроцесорним спілкуванням, що є справжнім болем.

Незалежно від того, з чим ви стикаєтесь з приводу численних процесів, я б хотів зробити ставку, що є кращий спосіб впоратися з цим (а не розпалювати інший процес).


Я ціную продуману відповідь і прийняла її. Якщо у вас є якась конкретніша інформація до №2, я вдячний. "Краще залишити в спокої" - це, безумовно, порада мудреця, але коли використовувати декілька робочих процесів, також було б добре знати. Я припускаю, що це є більш актуальним, коли у вас є дії на сервері, які потребують тривалого часу, щоб повернути відповідь, наприклад, великий звіт, веб-сервіс, який приймає великі повідомлення тощо. Я також припускаю, що всі нормальні паралельні параметри застосовуються?
Ерік Бурхам

Додамо лише: якщо ви очікуєте, що ваші програми гратимуть погано разом, діалогове вікно встановлення IIS зазначає, що Windows System Resource Manager можна встановити та використовувати для обмеження використання процесора та пам'яті в пулах додатків.
TristanK

@TristanK, дякую за пораду. Це було надзвичайно корисно.
Ерік Бурхам

@Coding Gorilla - Ще раз дякую за розуміння. Я вирішив зайнятися серйозним копанням «чому використовувати веб-сад» і придумав кілька відповідей. Усі застереження, які ви згадали, застосовуються, зокрема стосуються асинхронного доступу до спільних ресурсів, таких як різні кеші та користувацькі сесії. Функція веб-саду по суті просто дозволяє завантажувати запити на баланс на одному сервері з більш ніж на основний. Таким чином, вам доведеться мати справу з усіма застереженнями, з якими зазвичай ви працюєте, за сценарієм збалансованого навантаження, за винятком маршрутизації запитів.
Ерік Бурхам

@Coding Gorilla - Продовження ... Найкраща "причина", яку я знайшов для використання функції декількох робітників, - це підвищення продуктивності. Перевірте це посилання: iis-aid.com/articles/performance_testing/… . Звичайно, вам краще було знати, що ви робите з усіма асинхронними аспектами програмування, які ми часто нехтуємо враховувати на веб-сайтах, оскільки більшість з них (принаймні для початку) запускають одну робочу нитку. Отже, коротка відповідь на моє запитання: Спробуйте, якщо у вас є проблеми з продуктивністю.
Ерік Бурхам

4

Я завжди налаштовую спеціальний пул додатків для веб-сайту. Недорогі сценарії розміщення веб-сайтів - це сенс мати велику кількість сайтів на пул додатків.

Обмеження пам’яті насправді є лише примітивними порогами безпеки, щоб запобігти споживанню сайтом усіх системних ресурсів. Зауважте, що це більше потенційна проблема для Windows 2008 R2 x64, ніж для IIS 6.0 x86, оскільки програми x86 мали природну стелю пам'яті 2 Гб. На IIS 7.5 набагато простіше, щоб програма із витоком пам’яті споживала величезну кількість пам’яті.

Я також не є великим прихильником утилізації басейнів. Якщо у мене є пул прикладних програм і я працюю єдиною програмою, якщо з нашим кодом немає нічого поганого, ймовірно, не потрібно переробляти пул додатків. І якщо в програмі є дефект, остаточним відповідним дією було б виправлення коду.


Дякуємо, що вказали на 32-бітну кришку пам’яті. Я не знаю, як я забуваю ці речі. Я також вважаю, що правильний підхід, якщо у вас є достатньо несправний додаток для збою пулу програм, - це виправити його, якщо припустити, що у вас є доступ до коду. Я ціную поради!
Ерік Бурхам

Ми зробили кілька власних тестувань. Запуск пулу прикладних програм, схоже, має приблизно 64 Кб на пул додатків, ніж запуск усіх програм у тому ж пулі програм. Це перевищує зразковий період, що становить 12 годин, використовуючи монітор продуктивності для контролю споживання пам'яті. Це було на 64-бітному сервері. Я думаю, що якщо цей простий тест виявиться правильним, то ресурсна вартість одного пулу додатків за програму в основному незначна для сучасного обладнання.
Ерік Бурхам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.