Důležitou funkcí jakéhokoli webového serveru je schopnost omezit využití prostředků CPU konkrétním webem, jinak může jeden web monopolizovat prostředky CPU, což může být nepřijatelné, zejména pro servery webhostingu sdílející zdroje mezi několika klienty s různými weby. V IIS (Internetové informační služby) 7,0 a dřívějších verzích, bylo možné monitorovat využití CPU webovými aplikacemi a odpojit fond aplikací na několik minut, které překročily stanovený limit. Plná schopnost řídit spotřebu prostředků CPU dostupných pro každou skupinu aplikací se objevila pouze v roce 2006 IIS 8.0 (Windows Server 2012 a vyšší). Tato funkce se nazývá Throttling CPU a namísto dočasného zastavení fondu aplikací, který je pro procesor příliš agresivní, umožňuje nastavit maximální počet prostředků CPU dostupných pro každý fond IIS.
V tomto článku si ukážeme, jak omezit využití CPU aplikačních fondů ve službě IIS 8 (a vyšší) pomocí příkladu webového serveru založeného na systému Windows Server 2012..
Otevřete konzoli Správce internetových informačních služeb (IIS) (% systemroot% \ system32 \ inetsrv \ iis.msc), rozbalte server ve stromu a vyberte sekci Fondy aplikací. Nastavení Throttling CPU ve IIS jsou umístěna v sekci parametrů každé oblasti.
Tip. Aby bylo možné pro každý web běžící na IIS nastavit vlastní limity CPU, musíte pro každý web vytvořit vlastní fond aplikací..- Pokud potřebujete povolit omezení pro konkrétní fond, vyberte jej v seznamu a přejděte do části nastavení Pokročilá nastavení.
- Pokud potřebujete nastavit výchozí limity pro všechny fondy, vyberte sekci Nastavit výchozí nastavení fondu aplikací.
V okně nastavení Pokročilá nastavení zajímají nás parametry uvedené v sekci CPU:
- Limit - Maximální% času procesoru, které může fond aplikací použít. Pokud je tato hodnota překročena, provede se akce uvedená v poli Limit. Ve službě IIS je 8 procent uvedeno v tisícinách (1/1000 procent). Chcete-li například omezit spotřebu procesoru na 20%, musíte do pole Limit zadat 20 000. Ve službě IIS 8.5 je hodnota uvedena v běžných procentech. Limit použití můžete deaktivovat nastavením 0
- Omezte akci - akce, která se provádí s fondem při překročení limitu využití CPU
- Mezní interval (minuty) - frekvence kontroly a resetování výsledků stahování, když je pracovní postup pozastaven. Tento parametr se nepoužívá pro Throttling CPU a používá se pro kompatibilitu s předchozími verzemi IIS..
V poli Limit Action (Akce omezení) můžete vybrat jednu z následujících akcí, která bude provedena při překročení zadaného limitu.
- NoAction - neprovede se žádná akce a do protokolu se zaznamená událost přetečení CPU
- Killw3wp (Zabít pracovní procesy) - pracovní tok fondu, který překročil limit, je pozastaven na dobu uvedenou v poli Limit Interval. Odpovídající záznam se přidá do protokolu..
- Škrticí klapka - přísné omezení dostupných prostředků CPU hodnotou zadanou v poli Limit. Hodnota pole Limit je v tomto případě ignorována a událost je zapsána do protokolu.
- ThrottleUnderLimit - omezení fungují pouze při vysokém zatížení serveru. V přítomnosti volných zdrojů CPU může fond překročit určený limit.
Pomocí obslužného programu můžete nakonfigurovat Throttling CPU z příkazového řádku appcmd. Chcete-li například nastavit fond DefaultAppPool na 30% využití CPU, musíte spustit příkaz:
% systemroot% \ system32 \ inetsrv \ appcmd set apppool DefaultAppPool /cpu.limitlinks0000 /cpu.action:Throttle
Omezení pro všechny fondy IIS můžete povolit následujícím způsobem:
% systemroot% \ system32 \ inetsrv \ appcmd set config -section: system.applicationHost / applicationPools /applicationPoolDefaults.cpu.limit:10000 /cpu.action:Throttle / commit: apphost
Je třeba také poznamenat, že regulace zatížení se nevztahuje pouze na hlavní proces, ale na všechny dceřiné společnosti, pokud existují.
Ve IIS 8 tedy existuje možnost flexibilní regulace zatížení serveru spuštěním webových aplikací. Musíte však pochopit, že Throttling CPU se používá pouze k omezení maximálního zatížení CPU, ale ne k rezervě výkonu procesoru pro webovou aplikaci..