Пули додатків IIS, робочі процеси, домени додатків


88

Хто-небудь може пояснити відмінності в IIS між пулами програм, робочими процесами та доменами додатків? Крім того, як вони працюють разом? Я прочитав пару статей, але це все ще трохи бентежить.

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

Відповіді:


103

Я намагаюся вимовити їх іншими словами.

На сервері ви можете мати багато сайтів asp.net, які працюють разом. Кожен сайт - це домен програми .

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

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

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

домени додатків із пулами та процесами

Кожен робочий процес може мати безліч потоків.

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

Ще одна примітка. Звучить, що коли ви робите більше робочого процесу, у вас може бути більш плавне завантаження асинхронних сторінок. Існує невелика проблема з обробником сеансу asp.net, який блокує весь процес для завантаження сторінки - це добре і погано залежить, якщо ви це знаєте та обробляєте - або змініть.

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

Деякі питання на цю тему:
Веб-програма заблокована під час обробки іншої веб-програми під час спільного використання тієї самої сесії
Виклики jQuery Ajax до веб-служби видаються синхронними
ASP.NET Server не обробляє сторінки асинхронно
Заміна сеансу ASP.Net повністю

Тепер це блокування сеансу не впливає на різні сайти.

Серед різних веб-сайтів більш відпрацьований процес може допомогти не блокувати один веб-сайт іншим при тривалому процесі.
Крім того, серед різних сайтів може допомогти більше пулів, оскільки кожен пул має принаймні один відпрацьований процес, але пам’ятайте і переконайтеся самостійно, використовуючи провідник процесів, кожен робочий процес займає більше пам’яті вашого комп’ютера та один великий сервер з пам’яттю 16G і один SQL-сервер не може мати занадто багато різних відпрацьованих процесів - наприклад, на сервері зі 100 спільними сайтами, ви не можете мати 100 різних пулів.


Я з’ясовую, що це відрізняється від способу обробки IIS 5 у порівнянні з IIS 6 і вище. Отже, у IIS 5 у вас є один робочий процес і кілька доменів програм у ньому, порівняно з IIS 6, у вас є кілька робочих процесів (w3wp.exe) по одному для кожного пулу програм. У IIS 6.0 inetinfo переспрямовує на різні робочі процеси залежно від запиту. Я тут? Ось моє джерело dotnetslackers.com/articles/iis/…
Раві

@ user460103 Так, iis5 - це один робочий процес (кілька доменів програм можуть мати лише невеликий хакер, але вони не працюють разом.) Коли на одному сайті багато робочих процесів, тоді iis6 може перенаправити вас на інший робочий процес.
Арістос

Чи розробляє IIS новий процес для кожного веб-запиту? Або це закручує нову нитку?
змінна

@variable розкрутити новий потік - процес домосіди і працює весь час, або вони переробляють, як ви встановили їх на басейн ...
ARISTOS

Гаразд, якщо є кілька процесів, як тоді працюють сеанси - я думав, сеанс
змінна

18
  • Один сервер IIS може мати кілька пулів програм.
  • Одна веб-програма прив'язується до одного пулу програм.
  • В одному пулі програм може бути більше одного робочого процесу (коли Web Garden увімкнено).
  • Один робочий процес може мати кілька доменів додатків. Один домен програми живе лише в одному робочому процесі.
  • Один домен програми може мати кілька потоків. Один потік можуть спільно використовувати різні домени додатків у різний час.

Значення для розробників ASP.NET: щоб зробити ваш веб-сайт масштабованим, не використовуйте сеанс in-proc та не використовуйте статичний блокування змінних класів для синхронізації.


7
  1. Так, хоча не кожна програма є веб-сайтом. Ви можете мати додаток, яке вкладено під веб - сайту.

  2. Так, кожна програма повинна мати один робочий процес (пул додатків), хоча один пул додатків може обслуговувати кілька додатків. Можна розповсюджувати одну веб-програму (веб-сад / ферма), що означає, що вона буде працювати в декількох процесах.

  3. Кожен процес буде виконуватися у власному домені програми (кожен пул додатків є окремим доменом програми).


З MSDN.

Створення веб-програми :

Додаток - це групування вмісту на кореневому рівні веб-сайту або групування вмісту в окремій папці в кореневому каталозі веб-сайту.

Пули програм :

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


Отже, процес IIS має кілька доменів додатків (пули програм), і кожен пул програм може мати кілька веб-сайтів. То чи кілька веб-сайтів перебувають в одному домені додатка? Що робити, якщо на одному веб-сайті щось піде не так, це призведе до видалення всього домену програми та всіх веб-сайтів, які в ньому проживають?
Раві

@ user460103 Якщо ви аварійно завершите роботу пулу, тоді так, усі підключені до нього сайти зупиняються - і перезавантажуються знову.
Арістос

1
2. Ні. Програма може охоплювати більше одного робочого процесу, якщо налаштовано веб-сад.
Wiktor Zychla

@Wiktor - Я не перешкоджав цьому. Однак уточнена відповідь для уточнення.
Оді

3

З вихідного посилання: -http: //weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx

Додаток - це термін IIS, але його використовує ASP.NET. По суті, він створює пісочницю або набір меж, щоб відокремити різні сайти або частини сайтів від інших.

AppDomain - це термін .NET. (У IIS7 AppDomains відіграють більшу роль у IIS, але здебільшого це термін ASP.NET)

Робочий процес використовується для обробки запиту веб-програми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.