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..
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..