Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Event ID 2004 Windows Server, AD и Роли

Event ID 2004 Resource-Exhaustion-Detector: нехватка виртуальной памяти

Обновлено: 28.08.2026 · Официальная документация ↗

Симптомы нехватки виртуальной памяти

В журнале System фиксируется критическое предупреждение Event ID 2004: Windows successfully diagnosed a low virtual memory condition. Система указывает список процессов, потребивших наибольший объем виртуальной и физической памяти (Commit Charge).

СимптомПроявление на сервере
Зависание приложенийПрограммы аварийно закрываются с ошибкой Out of Memory
Отказ создания новых процессовОшибка «Недостаточно памяти для обработки команды»
Черный экран при входе по RDPСлужба explorer.exe не может инициализировать рабочий стол

Пошаговое решение проблемы с памятью (Event ID 2004)

  1. Определите процесс с утечкой памяти: откройте текст события 2004 в Event Viewer. В описании будут перечислены 3 главных процесса с указанием выделенной памяти в байтах. Также выполните анализ через PowerShell:
# Топ-10 процессов по потреблению виртуальной и рабочей памяти:
Get-Process | Sort-Object -Property PrivateMemorySize -Descending | Select-Object -First 10 -Property Id, ProcessName, @{Name="RAM (MB)";Expression={[math]::round($_.WorkingSet/1MB,2)}}, @{Name="Commit (MB)";Expression={[math]::round($_.PrivateMemorySize/1MB,2)}} | Format-Table -AutoSize
  1. Настройте фиксированный размер файла подкачки (pagefile.sys): динамический файл подкачки может не успевать расширяться при резких нагрузках. Задайте фиксированный размер:
# Настройка фиксированного размера файла подкачки (например, 16 ГБ на диске C:):
$ComputerSystem = Get-WmiObject -Class Win32_ComputerSystem
$ComputerSystem.AutomaticManagedPagefile = $False
$ComputerSystem.Put()

$PageFileSetting = Get-WmiObject -Class Win32_PageFileSetting
if ($PageFileSetting) { $PageFileSetting.Delete() }

Set-CimInstance -Query "Select * from Win32_PageFileSetting" -Property @{InitialSize = 16384; MaximumSize = 16384}
# Либо через wmic:
wmic pagefilesetting create name="C:\pagefile.sys",initialsize=16384,maximumsize=16384
  1. Проверьте утечку невыгружаемого пула (Non-Paged Pool): если память занята драйвером, проверьте размер пулов ядра:
# Просмотр размера пулов памяти ядра:
Get-CimInstance Win32_OperatingSystem | Select-Object @{N="NonPagedPool_MB";E={[math]::round($_.MaxProcessMemorySize/1024,2)}}, FreePhysicalMemory, TotalVisibleMemorySize

Рекомендация: Если утечку создает sqlservr.exe, ограничьте максимальный объем памяти SQL Server через SSMS (Server Properties > Memory > Maximum server memory), чтобы оставить не менее 4–8 ГБ для самой ОС Windows.

💡 Практика специалистов: При появлении Event 2004 на терминальных серверах виновниками чаще всего являются вкладки браузеров пользователей (msedge.exe/chrome.exe) или фоновые утечки Java. Настройте ограничение сессий по времени простоя и автоматический сброс висячих сессий.

Частые вопросы (FAQ)

Чем отличается физическая память от виртуальной (Commit Limit)?

Физическая память — это установленные планки RAM. Виртуальная память (Commit) — это сумма RAM и файла подкачки. Ошибка 2004 возникает, когда исчерпан именно лимит выделения Commit Limit.

Можно ли полностью отключить файл подкачки, если на сервере 64 ГБ RAM?

Нет. Windows требует наличия файла подкачки для создания аварийных дампов памяти и для выгрузки неиспользуемых страниц памяти программ. Отключение файла подкачки провоцирует Event ID 2004.

Как найти скрытую утечку памяти в пуле драйверов ядра?

Используйте стандартную системную утилиту Poolmon из комплекта Windows Driver Kit (WDK) и отсортируйте теги по параметру 'Bytes'.

Какой оптимальный размер файла подкачки для Windows Server?

Обычно устанавливают фиксированный размер: от 1x до 1.5x объема RAM при объеме до 16 ГБ, и фиксированные 16–32 ГБ при больших объемах памяти.

Полезные материалы
Рекомендуем