Пределы ЦП для пулов приложений в IIS 7.5

8

Я вижу, что в iis 7.5 я могу установить предел загрузки ЦП в течение определенного времени для пула приложений. Я также могу заставить его убить рабочий процесс, если этот предел нарушается. Если вы скажете это сделать, будет ли рабочий процесс автоматически перезагружаться после его уничтожения, или требуется ручное вмешательство?

В переполнении стека есть упоминание, что оно может быть перезапущено по окончании интервала ...

Кайл Брандт
источник

Ответы:

4

Это похоже на один из тех случаев, когда симуляция (или доступ к исходному коду ...> sigh <), вероятно, будет единственным способом увидеть поведение с какой-либо степенью достоверности.

Документация для записи в журнале событий для утилизации квот процессора говорит об утилизации следующим образом:

По умолчанию повторное использование пула приложений перекрывается, что означает, что рабочий процесс, который должен быть остановлен, продолжает работать до тех пор, пока не будет запущен новый рабочий процесс. После запуска нового рабочего процесса ему передаются новые запросы. Старый рабочий процесс завершает работу после того, как завершает обработку существующих запросов или по истечении установленного времени ожидания, в зависимости от того, что наступит раньше. Этот способ утилизации обеспечивает бесперебойное обслуживание клиентов. Однако если приложение в пуле приложений не может запускать более одного экземпляра одновременно, перекрывающееся вращение может быть отключено.

Мне кажется, что по определению завершение рабочего процесса из-за чрезмерного потребления ЦП будет означать, что отложенные запросы не будут разрешены для выполнения (так как они исчерпывают квоту ЦП).

Если говорить о вашей главной заботе: я не вижу ничего, что могло бы заставить меня поверить, что новый рабочий процесс не будет запущен автоматически. Утверждение в вашей ссылке переполнения стека заставляет меня задаться вопросом, может ли алгоритм, используемый IIS, на самом деле связывать рециркуляцию с разрешением таймера, используемого для измерения исчерпания квоты ЦП. Лучший способ, который я знаю, чтобы определить это, - написать бесполезный серверный компонент на ЦП, развернуть его в тестовой среде и посмотреть, как действует его переработка. Простого компонента, который сидит в узком цикле в течение нескольких секунд, а затем возвращает известную строку, в сочетании с клиентом, выполняющим тестовую программу с чем-то вроде пула параллельных процессов "wget", может быть достаточно.

Эван Андерсон
источник
Похоже, мне просто нужно это проверить. Я уже написал сценарий тестирования под нагрузкой в ​​python для проверки такого рода вещей, который пригодился ... мне пришлось использовать взломанную версию сокета и библиотеку http, чтобы я мог связываться с разными исходными IP-адресами :-)
Кайл Брандт
Хотя одного запроса может быть достаточно, хотя ... веб-приложение, которое вычисляет пи ...
Кайл Брандт
@Kyle: я не буду делать бесконечный запрос, хотя. Я бы сделал то, что, как только вы получите несколько запросов «в полете», насыщает процессор сервера, но в конечном итоге возвращает результат. Таким образом, ваш испытательный стенд может сообщать об успешном / неудачном выполнении всех запросов. В противном случае вы понятия не имеете, приводит ли процесс переработки к перебоям в обслуживании клиентов или нет.
Эван Андерсон
О, я понимаю, что вы говорите ... не было главной целью этого теста ... но хорошая информация, чтобы иметь. Я просто хочу посмотреть, когда его убьют, вернется ли он или нет. Ограничение ЦП будет составлять около 90% в течение 5 минут при использовании 5-10%. В основном это сломано :-)
Кайл Брандт
Мое собственное тестирование показало, что при запуске пула приложений с 1-минутным обновлением с лимитом ЦП 1 (очень малым), при достижении лимита, регистрируется системное событие 5025, и пул приложений останавливается , убивая процесс w3wp. По истечении этого срока пул приложений перезапускается.
glasnt
4

Учитывая комментарии в другом ответе, я провел собственное тестирование, которое я здесь воспроизведу.

В моем тестировании ограничение пула приложений (v4.0 Integrated) небольшим лимитом ЦП (0,01%) и небольшим интервалом (1 минута) с включенным действием KillW3WP ; превышение этого лимита убивает w3wp путем остановки пула приложений .

После того, как предел интервала достигнут, пул приложений автоматически перезапускается .

Изменение действия на No Action не меняет процесс w3wp.

В обоих случаях регистрируется системное событие 5025.

glasnt
источник