Ограничение на процесора за пул за приложение в IIS 8

Важна функция на всеки уеб сървър е възможността да ограничи използването на CPU ресурси от конкретен сайт, в противен случай един сайт може да монополизира CPU ресурси, което може да е неприемливо, особено за уеб хостинг сървъри, споделящи ресурси между няколко клиента с различни сайтове. Най- IIS (Интернет информационни услуги) 7.0 и по-ранни версии, съществуваше възможност за наблюдение на използването на процесора от уеб приложения и изключване на пула за приложения в продължение на няколко минути, надвишаващи определения лимит. Пълната способност за контрол на потреблението на CPU ресурси, достъпни за всеки пул от приложения, се появи само в IIS 8.0 (Windows Server 2012 и по-нови версии). Тази функция се нарича Процесор дросел и вместо временно спиране на пула от приложения, който е твърде агресивен за процесора, ви позволява да зададете максималния брой CPU ресурси, налични за всеки IIS пул.

В тази статия ще покажем как да ограничим използването на процесора от пулове на приложения в IIS 8 (и по-нови), използвайки примера на уеб сървър, базиран на Windows Server 2012.

Отворена конзола Мениджър на Интернет информационни услуги (IIS) (% systemroot% \ system32 \ inetsrv \ iis.msc), разширете вашия сървър в дървото и изберете секцията Пулове за приложения. Настройките на процесора в IIS се намират в секцията с параметри на всеки пул.

съвет. Така че за всеки сайт, работещ на IIS, можете да зададете свои собствени лимити на процесора, трябва да създадете свой собствен App Pool за всеки сайт.
  • Ако трябва да активирате ограничения за конкретен пул, изберете го в списъка и отидете на секцията с настройки Разширени настройки.
  • Ако трябва да зададете лимити по подразбиране за всички пулове, изберете секцията Задаване по подразбиране на пула за приложения.

В прозореца за настройки Разширени настройки интересуваме се от параметрите, посочени в секцията за процесора:

  • лимит - Максималният% от времето на процесора, който пулът от приложения може да използва. Ако тази стойност е надвишена, се извършва действието, посочено в полето Limit. В IIS 8 процента са посочени в хилядни (1/1000 процента). Например, за да ограничите потреблението на процесора до 20%, трябва да посочите 20 000 в полето Limit.В IIS 8.5 стойността е посочена в обикновени проценти. Можете да деактивирате ограничението за използване, като зададете 0
  • Ограничете действие - действие, което се извършва с пула при превишаване на лимита на използване на процесора
  • Ограничаване на интервал (минути) - честотата на проверка и нулиране на резултатите за изтегляне, когато работният процес е поставен на пауза. Този параметър не се използва за процесорно Throttling и се използва за съвместимост с предишни версии на IIS..

съвет. Тези настройки се отнасят само за потребителя, от който пулът работи. По подразбиране всеки пул се стартира от неговия акаунт, като по този начин натоварването на всеки пул се регулира индивидуално. Ако използвате специален акаунт за стартиране на множество пулове, тогава настройките за тях ще бъдат идентични.

В полето Ограничаване на действието можете да изберете едно от следните действия, които ще бъдат извършени, когато определеният лимит е надвишен.

  • NoAction - не се предприемат действия и случайът на превишаване на процесора се записва в дневника
  • KillW3wp (Kill работни процеси) - работният процес на пул, превишил лимита, се спира за времето, посочено в полето Limit Interval. Съответният запис се добавя към дневника..
  • дросел - стриктно ограничаване на наличните CPU ресурси със стойността, посочена в полето Limit. Стойността на полето Limit в този случай се игнорира и в лога се записва събитие.
  • ThrottleUnderLimit - ограниченията работят само при голямо натоварване на сървъра. При наличие на безплатни CPU ресурси, пулът може да надхвърли определения лимит.

Можете да конфигурирате CPU Throttling от командния ред, като използвате помощната програма appcmd. Например, за да зададете пула DefaultAppPool на ограничение от 30% от използването на процесора, трябва да изпълните командата:

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

Можете да активирате ограничението за всички пулове IIS, както следва:

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

Трябва също да се отбележи, че регулирането на натоварването се прилага не само за основния процес, но и за всички дъщерни дружества, ако има такива.

По този начин в IIS 8 съществува възможност за гъвкаво регулиране на зареждането на сървъра чрез стартиране на уеб приложения. Но трябва да разберете, че процесорът Throttling се използва само за ограничаване на максималното натоварване на процесора, но не и за запазване на мощността на процесора за уеб приложение..