Ograničenje CPU-a za skup aplikacija u IIS 8

Važna funkcija bilo kojeg web poslužitelja je mogućnost ograničavanja upotrebe resursa CPU-a za određeno web mjesto, u protivnom jedna web stranica može monopolizirati resurse CPU-a, što može biti neprihvatljivo, posebno za web hosting poslužitelje koji dijele resurse između nekoliko klijenata s različitih web mjesta. IIS (Internet informacijske usluge) 7.0 i starije verzije postojala je mogućnost praćenja upotrebe CPU-a web aplikacijama i isključivanje baze aplikacija nekoliko minuta što je premašilo navedeno ograničenje. Potpuna sposobnost kontrole potrošnje resursa procesora dostupnih svakom paketu aplikacija pojavila se tek u sustavu IIS 8.0 (Windows Server 2012 i novije verzije). Ta se značajka zove Procesno leptir i umjesto privremenog zaustavljanja baze podataka koji je previše agresivan za procesor, omogućuje vam postavljanje maksimalnog broja resursa CPU-a dostupnih za svaki IIS skup.

U ovom ćemo članku pokazati kako ograničiti upotrebu procesora u aplikacijskim fondovima u IIS 8 (i novijima) koristeći primjer web poslužitelja temeljenog na Windows Server 2012.

Otvorite konzolu Upravitelj internetskih informacijskih usluga (IIS) (% systemroot% \ system32 \ inetsrv \ iis.msc), proširite svoj poslužitelj u stablu i odaberite odjeljak Aplikacijski bazeni. Postavke procesiranja umetanja procesora u IIS nalaze se u odjeljku s parametrima svakog bazena.

vijeće. Tako da za svaku web lokaciju koja radi na IIS-u možete postaviti vlastita ograničenja CPU-a, za svaku web lokaciju morate kreirati vlastiti paket aplikacija.
  • Ako morate omogućiti ograničenja za određeni bazen, odaberite ga na popisu i idite na odjeljak postavki Napredne postavke.
  • Ako trebate postaviti zadana ograničenja za sve bazene, odaberite odjeljak Postavite zadane baze podataka aplikacija.

U prozoru postavki Napredne postavke zanimaju nas parametri navedeni u odjeljku CPU:

  • granica - Maksimalni% vremena procesora koje može koristiti aplikacijski skup. Ako je ta vrijednost premašena, izvodi se akcija navedena u polju Ograničenje. U IIS-u je 8 posto navedeno u tisućama (1/1000 posto). Na primjer, da biste ograničili potrošnju CPU-a na 20%, u polju Limit morate navesti 20 000. U IIS 8.5 vrijednost je navedena u običnim postocima. Ograničenje upotrebe možete onemogućiti postavljanjem 0
  • Ograničenje djelovanja - radnja koja se izvodi s bazenom kada je prekoračena granica upotrebe CPU-a
  • Ograničenje intervala (u minutama) - učestalost provjere i resetiranja rezultata preuzimanja kada je tijek rada pauziran. Ovaj se parametar ne koristi za CPU Throttling i koristi se za kompatibilnost s prethodnim verzijama IIS-a..

vijeće. Ove se postavke odnose samo na korisnika od kojeg se izvodi bazen. Prema zadanim postavkama, svaki se bazen pokreće sa svog računa, pa se opterećenje svakog bazena pojedinačno regulira. Ako koristite posebni račun za pokretanje više grupa, tada će postavke za njih biti identične.

U polju Ograniči radnja možete odabrati jednu od sljedećih radnji koje će se izvesti kad je prekoračena zadana granica.

  • nisu neka aktivnost - ne poduzimaju se akcije i događaj prekoračenja CPU-a bilježi se u zapisnik
  • KillW3wp (Ubiti radnički procesi) - tijek rada bazena koji je premašio ograničenje obustavlja se tijekom vremena određenog u polju Limit Interval. U dnevnik se dodaje odgovarajući unos..
  • gasa - strogo ograničenje dostupnih resursa CPU-a vrijednošću navedenom u polju Limit. Vrijednost polja Limit u ovom se slučaju zanemaruje, a događaj se zapisuje u dnevnik.
  • ThrottleUnderLimit - ograničenja rade samo pri velikom opterećenju poslužitelja. U slučaju besplatnih resursa CPU-a, bazen može premašiti navedeni limit.

Možete konfigurirati CPU Throttling iz naredbenog retka pomoću uslužnog programa appcmd. Na primjer, da biste postavili DefaultAppPool bazen na ograničenje od 30% CPU-a, trebate pokrenuti naredbu:

% systemroot% \ system32 \ inetsrv \ appcmd postavi apppool DefaultAppPool /cpu.limitlinks0000 /cpu.action:Throttle

Ograničenje možete omogućiti za sve IIS bazene na sljedeći način:

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

Također treba napomenuti da se regulacija opterećenja primjenjuje ne samo na glavni postupak, već i na sve podružnice, ako postoje.

Dakle, u IIS 8 postoji mogućnost fleksibilne regulacije učitavanja poslužitelja pokretanjem web aplikacija. Ali morate razumjeti da se CPU Throttling koristi samo za ograničavanje maksimalnog opterećenja CPU-a, ali ne i za rezerviranje snage CPU-a za web aplikaciju..