Мы внедряем apis asp.net на основе .Net4 на большое количество серверов Windows, и для того, чтобы снизить затраты на АМС, мы используем их как можно меньше.
Проблема, с которой мы сталкиваемся, заключается в том, что после инициализации vm и развертывания кода мы наблюдаем высокую загрузку ЦП в течение нескольких минут. Большая часть этого использования процессора происходит от процесса "ngentask.exe". Это не связано с запуском приложения, мы обычно видим, что это происходит через несколько минут после того, как развертывание продолжается, и другие процессы, нагруженные процессором, успокаиваются.
Стоит также упомянуть, что в рамках нашего процесса развертывания мы «касаемся» приложения, вызывая веб-запрос к предопределенной конечной точке «работоспособность» в приложении, которая просто является пустым контроллером MVC в большинстве наших приложений - мы делаем это как для проверки того, что приложение действительно запущено, так и для того, чтобы убедиться, что оно «прогрето» и готово обслуживать трафик.
Глядя на файл ngen.log, временные метки отлично совпадают с использованием процессора:
11/13/2018 14:20:13.275 [732]: Task scheduler requested starting 32-bit task
11/13/2018 14:20:13.371 [732]: Task scheduler requested starting 64-bit task
11/13/2018 14:20:13.371 [732]: Launching NGen Task, command line: "C:\Windows\Microsoft.NET\Framework\v4.0.30319\NGenTask.exe" /RuntimeWide /StopEvent:380
11/13/2018 14:20:13.371 [732]: Launching NGen Task, command line: "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\NGenTask.exe" /RuntimeWide /StopEvent:860
11/13/2018 14:20:13.512 [3104]: NGen Task starting, command line: "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\NGenTask.exe" /RuntimeWide /StopEvent:860
11/13/2018 14:20:13.560 [3104]: Attempting to acquire task lock.
Как я уже писал, это может произойти через 10 минут после развертывания, и к этому времени приложение уже обслуживает запросы. Это заставляет меня поверить, что эти задачи на самом деле не нужны - если бы они были, приложение не работало бы в течение 10 минут между развертыванием и завершением этих процессов.
Итак, мой вопрос: могу ли я отключить эту задачу? Это базовые серверы Windows 2016, на которых запущено только одно веб-приложение asp.net, поэтому не нужно устанавливать «случайные» приложения графического интерфейса или что-либо подобное.