Я искал включение лимита ЦП для веб-сайта.
В дополнительных настройках для соответствующего пула приложений я установил
Лимит ЦП: 95000
Ограничить действие: NoAction
Предельный интервал: 5
Оставив это на ночь, я проверил журналы событий, чтобы узнать, как часто рабочий процесс перезагружался. К моему ужасу, это происходило бы каждые несколько минут, подразумевая, что сервер был загружен на максимум большую часть ночи, что неверно, зарегистрированное общее использование процессора никогда не превышает 50%.
Используя диспетчер задач, диспетчер ресурсов и PerfMon в течение дня и корректируя указанные выше значения, все они согласились с тем, что общее использование процессора составляет в среднем 13%, однако PerfMon отличался, когда вы смотрели на использование процессора отдельного процесса (счетчик: процесс \% времени процесса (w3wp ), сообщая о среднем 30% -40% .Этому счетчику удалось достичь высокого значения 300%, которое после чтения здесь объясняется тем, что это сумма всего использования по всем ядрам, а не нормализованная, как другие счетчики.
Теперь моя проблема заключается в том, что ограничение ЦП IIS основывает свое решение на этом счетчике и, следовательно, хочет ошибочно перезапустить процесс.
Это стандартная версия Windows 2008 x64, установленная на голое железо, четырехъядерный процессор, IIS - единственная установленная роль. Я настроил как BIOS, так и управление питанием Windows для повышения производительности, так как мне было интересно, могло ли на это повлиять увеличение / уменьшение скорости процессора, но это не так.
Мне не нужно диагностировать высокую загрузку процессора, мы просто хотим, чтобы процесс был правильно переработан, если он когда-либо достигнет высокого уровня.
Я предполагаю, что я, должно быть, пропустил какую-то настройку зависимостей в другом месте, и теперь не понимаю, как правильно реализовать это ограничение процессора.
Чтобы получить аналогичное число в Perfmon, вам нужно разделить выходную запись, которую вы получаете в Perfmon, на количество процессоров в системе. Обратите внимание, что Perfmon и TaskManager используют разные способы сбора этой информации.
Например, у меня есть виртуальная машина с 3 виртуальными ЦП - максимум, который может достичь процесс, составляет 300%, поэтому я просто делю запись Perfmon этого процесса на 3.