Исправить .NET Runtime Optimization Service, который нагружает CPU

О чём эта статья
В статье объясняется, что такое .NET Runtime Optimization Service (часто отображается как Mscorsvw.exe или процессы ngen), почему он может потреблять много CPU и какие последовательные шаги можно выполнить в Windows 10, чтобы вернуть нормальную производительность. Приведены инструкции для пользователей и администраторов, контрольный список и сценарии проверки результата.
Что такое .NET Runtime Optimization Service
Определение в одну строку: .NET Runtime Optimization Service — это фоновая служба (связана с ngen / Mscorsvw.exe), которая компилирует и оптимизирует сборки .NET для более быстрого запуска приложений.
Почему иногда высокий CPU:
- Служба обычно работает короткими всплесками при установке/обновлении .NET или приложений.
- Длительная высокая загрузка может означать испорченные файлы, конфликт, либо наличие вредоносной программы, маскирующейся под службу.
Важное: перед любыми действиями сделайте точку восстановления или снимок важной конфигурации системы.
Пошаговые способы исправления
1. Полная проверка на вредоносное ПО
Описание: Иногда вредоносное ПО маскируется под системный процесс и вызывает длительную загрузку CPU.
Шаги:
- Обновите базу антивируса и выполните полное сканирование системы.
- Запустите проверку с помощью встроенного Защитника Windows (Windows Security) и/или надёжного стороннего антивируса.
- При подозрениях используйте сканер по требованию (например, Microsoft Safety Scanner) и выполните проверку в безопасном режиме.
Примечание: очистка от вредоносного ПО часто решает проблему полностью.
2. Запуск переработки очереди оптимизации через CMD (ngen)
Когда это применимо: если служба выполняет оптимизацию слишком долго после обновлений .NET.
Шаг 1: Откройте меню Пуск, введите «cmd», щёлкните правой кнопкой и выберите “Запуск от имени администратора”.
Шаг 2: Введите команду для перехода в каталог .NET и запустите ngen. Для 32‑битной Windows:
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
ngen.exe executequeueditems
Для 64‑битной Windows:
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
ngen.exe executequeueditems
Что это делает: команда запускает выполнение ожидующих задач компиляции (executequeueditems) для предкомпиляции сборок и завершает очередь задач, что обычно уменьшает нагрузку.
Важно: дождитесь завершения команды. В консоли может ничего не показываться сразу; посмотрите статус через Диспетчер задач.
3. Перезапуск службы через Службы (services.msc)
Когда это применимо: если служба зависла или работает неправильно.
Шаги:
- Нажмите Win+R, введите services.msc и нажмите Enter.
- Найдите строку, связанную с .NET Runtime Optimization. В интерфейсе она может называться “.NET Runtime Optimization Service”, “Microsoft .NET Framework NGEN” или содержать “clr_optimization” в имени.
- Щёлкните по строке правой кнопкой и выберите “Перезапустить”. Если кнопки “Перезапустить” нет, нажмите “Остановить”, дождитесь завершения, затем “Запустить”.
- В свойствах службы установите Тип запуска: “Автоматически”, примените и закройте.
Примечание: в исходной инструкции указывалось имя другой службы (NVIDIA Telemetry Container) — это не относится к .NET; убедитесь, что вы перезапускаете именно службу, связанную с .NET.
4. Запуск официального сценария от Microsoft
Когда это применимо: если предыдущие шаги не помогли и требуется восстановление компонентов .NET.
Шаги:
- На страницах Microsoft или официальном репозитории Microsoft на GitHub может присутствовать скрипт для диагностики/восстановления. Откройте доверенную страницу Microsoft или GitHub с официальным репозиторием.
- Скачайте файл скрипта: щёлкните “Raw” и “Сохранить как…”; убедитесь, что расширение соответствует Windows Script File (.wsf, .vbs) или .ps1 для PowerShell, если это предложено автором.
- Запустите файл от имени администратора (через правый клик -> “Запуск от имени администратора” или через PowerShell). Если Windows спросит программу для запуска, выберите “Windows Script Host” или PowerShell в зависимости от типа файла.
Безопасность: загружайте скрипты только с официальных страниц Microsoft.
Дополнительные проверки и альтернативы
- Проверьте журнал событий (Event Viewer) на ошибки .NET или связанные с ngen/mscorsvw.
- Временно отключите автозапуск сторонних приложений, которые могли инициировать повторную компиляцию.
- Если вы администратор сети, проверьте политики групп (GPO) или скрипты развертывания, которые могут запускать перебор сборок на каждом старте.
Диагностическое дерево (решение в несколько шагов)
flowchart TD
A[Высокая загрузка CPU от Mscorsvw/ngen] --> B{Сканировали на вирусы?}
B -- Нет --> C[Полное сканирование и очистка]
B -- Да --> D{ngen завершил задачи?}
C --> D
D -- Нет --> E[Запустить ngen.exe executequeueditems от администратора]
E --> F{Падение/ошибки в журнале?}
D -- Да --> G[Перезапустить службу через services.msc]
F -- Да --> H[Посмотреть Event Viewer и выполнить сценарий восстановления Microsoft]
F -- Нет --> I[Проверить сторонние приложения и политики]
G --> I
H --> I
I --> J[Если не помогло — обратиться к администратору или поддержке]
Контрольный список: что проверить и когда
Для домашнего пользователя:
- Полное сканирование антивирусом
- Выполнить ngen.exe executequeueditems (через админ‑CMD)
- Перезапустить .NET Runtime Optimization Service
- Проверить, снизилась ли загрузка CPU
Для системного администратора:
- Проверить репликацию и политики, запускающие ngen
- Просмотреть журналы событий на всех затронутых машинах
- Протестировать официальный скрипт Microsoft на контрольной машине
Критерии приёмки
Считайте задачу исправленной, если:
- Уровень использования CPU службой вернулся к нормальному фоновому значению (короткие всплески при обновлении допустимы).
- Команда ngen.exe выполнилась и завершила очередь задач без ошибок.
- Журналы событий не показывают повторяющихся ошибок CLR или ngen.
Когда это не сработает и что делать дальше
- Если после всех шагов нагрузка остаётся высокой и процессы выглядят подозрительно, вероятней всего это вредоносный процесс — потребуется исследование безопасности и, возможно, переустановка ОС.
- В корпоративной среде причиной могут быть сценарии автоматического развёртывания; отключите их на одном рабочем узле и проверьте.
Короткая инструкция для быстрого запуска
- Откройте CMD от администратора.
- Выполните:
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
ngen.exe executequeueditems
- Откройте services.msc, найдите службу .NET Runtime Optimization и перезапустите её.
- Завершите полное сканирование на вирусы.
Глоссарий (1 строка)
- ngen.exe — утилита Native Image Generator, предкомпилирует сборки .NET для ускорения запуска приложений.
Итог
Если .NET Runtime Optimization Service вызывает высокую загрузку CPU, начните с антивирусной проверки, затем выполните принудительную обработку очереди через ngen.exe и перезапустите соответствующую службу. В большинстве случаев это возвращает систему в норму; если нет — используйте официальный сценарий восстановления Microsoft или обратитесь к специалисту.
Дополнительные руководства по типичным проблемам Windows 10 и их устранению можно найти в разделе Windows 10 Troubleshooting Guide.
Благодарим за чтение — оставьте комментарий с вашей ситуацией, если нужно руководство по конкретной ошибке.
Похожие материалы

Ошибка беспроводного адаптера или точки доступа — как исправить

Как восстановить удалённые SMS на телефоне

Присвоение геотегов в Apple Photos

Резервное копирование фото без компьютера

Как выбрать приложение для торговли индексами
