Ograniczenia procesora dla puli aplikacji w IIS 8

Ważną funkcją każdego serwera WWW jest możliwość ograniczenia wykorzystania zasobów procesora przez konkretną witrynę, w przeciwnym razie jedna strona może zmonopolizować zasoby procesora, co może być nie do przyjęcia, szczególnie w przypadku serwerów hostingu dzielących zasoby między kilkoma klientami z różnymi witrynami. W IIS (Internetowe usługi informacyjne) 7.0 i we wcześniejszych wersjach istniała możliwość monitorowania wykorzystania procesora przez aplikacje internetowe i odłączenia puli aplikacji na kilka minut, które przekroczyły określony limit. Pełna zdolność do kontrolowania zużycia zasobów procesora dostępnych dla każdej puli aplikacji pojawiła się tylko w IIS 8.0 (Windows Server 2012 i wyższy). Ta funkcja nazywa się Ograniczanie procesora i zamiast tymczasowego zatrzymania puli aplikacji, która jest zbyt agresywna dla procesora, pozwala ustawić maksymalną liczbę zasobów procesora dostępnych dla każdej puli IIS.

W tym artykule pokażemy, jak ograniczyć użycie procesora przez pulę aplikacji w IIS 8 (i wyższych) na przykładzie serwera WWW opartego na systemie Windows Server 2012.

Otwórz konsolę Menedżer internetowych usług informacyjnych (IIS) (% systemroot% \ system32 \ inetsrv \ iis.msc), rozwiń swój serwer w drzewie i wybierz sekcję Pule aplikacji. Ograniczanie ustawień procesora w usługach IIS znajduje się w sekcji parametrów każdej puli.

Wskazówka. Aby dla każdej witryny działającej w IIS można ustawić własne limity procesora, należy utworzyć własną pulę aplikacji dla każdej witryny.
  • Jeśli chcesz włączyć ograniczenia dla konkretnej puli, wybierz ją z listy i przejdź do sekcji ustawień Ustawienia zaawansowane.
  • Jeśli chcesz ustawić domyślne limity dla wszystkich pul, wybierz sekcję Ustaw wartości domyślne puli aplikacji.

W oknie ustawień Ustawienia zaawansowane interesują nas parametry określone w sekcji CPU:

  • Limit - Maksymalny% czasu procesora, z którego może korzystać pula aplikacji. Jeśli ta wartość zostanie przekroczona, wykonywana jest akcja określona w polu Limit. W IIS 8 procent jest określone w tysięcznych (1/1000 procent). Na przykład, aby ograniczyć zużycie procesora do 20%, w polu Limit należy podać 20 000. W IIS 8.5 wartość jest podana w zwykłych procentach. Możesz wyłączyć limit użycia, ustawiając 0
  • Ogranicz działanie - akcja wykonywana z pulą, gdy limit użycia procesora zostanie przekroczony
  • Limit interwału (minuty) - częstotliwość sprawdzania i resetowania wyników pobierania, gdy przepływ pracy jest wstrzymany. Ten parametr nie jest używany do ograniczania przepustowości procesora i służy do zachowania zgodności z poprzednimi wersjami IIS..

Wskazówka. Te ustawienia dotyczą tylko użytkownika, od którego pula jest uruchomiona. Domyślnie każda pula jest uruchamiana spod jego konta, dlatego obciążenie każdej puli jest indywidualnie regulowane. Jeśli używasz dedykowanego konta do uruchamiania wielu pul, ustawienia dla nich będą identyczne.

W polu Limit akcji możesz wybrać jedną z następujących akcji, które zostaną wykonane po przekroczeniu określonego limitu.

  • NoAction - żadne działanie nie jest podejmowane, a zdarzenie przekroczenia procesora jest rejestrowane w dzienniku
  • Killw3wp (Zabij procesy robocze) - przepływ pracy puli, która przekroczyła limit, zostaje zawieszony na czas określony w polu Przedział limitu. Odpowiedni wpis zostanie dodany do dziennika..
  • Przepustnica - ścisłe ograniczenie dostępnych zasobów procesora o wartość określoną w polu Limit. Wartość pola Limit w tym przypadku jest ignorowana, a zdarzenie jest zapisywane w dzienniku.
  • ThrottleUnderLimit - ograniczenia działają tylko przy dużym obciążeniu serwera. W obecności wolnych zasobów procesora pula może przekroczyć określony limit.

Możesz skonfigurować Ograniczanie Procesora z wiersza poleceń za pomocą narzędzia appcmd. Na przykład, aby ustawić pulę DefaultAppPool na limit 30% użycia procesora, musisz uruchomić polecenie:

% systemroot% \ system32 \ inetsrv \ appcmd ustaw apppool DefaultAppPool /cpu.limit00000000 /cpu.action:Throttle

Możesz włączyć ograniczenie dla wszystkich pul IIS w następujący sposób:

% systemroot% \ system32 \ inetsrv \ appcmd set config -section: system.applicationHost / applicationPools /applicationPoolDefaults.cpu.limit:10000 /cpu.action:Throttle / commit: apphost

Należy również zauważyć, że regulacja obciążenia ma zastosowanie nie tylko do głównego procesu, ale do wszystkich spółek zależnych, jeśli takie istnieją.

Tak więc w IIS 8 istnieje możliwość elastycznej regulacji obciążenia serwera poprzez uruchamianie aplikacji internetowych. Ale musisz zrozumieć, że Ograniczanie procesora jest używane tylko w celu ograniczenia maksymalnego obciążenia procesora, ale nie w celu zarezerwowania mocy procesora dla aplikacji sieci web..