Event ID 26 Application Popup: Windows Out of Virtual Memory — решение
Симптомы нехватки виртуальной памяти (Event ID 26)
Приложения аварийно завершают работу, зависают сессии пользователей RDP, службы SQL Server или IIS отказываются обрабатывать запросы, генерируя ошибки System.OutOfMemoryException. В системном журнале System регистрируется событие Event ID 26 Application Popup.
| Параметр | Значение |
|---|---|
| Имя журнала | System |
| Источник | Application Popup |
| Идентификатор | Event ID 26 |
| Уровень | Warning / Information |
| Текст сообщения | Application popup: Windows - Out of Virtual Memory : Your system is low on virtual memory. To ensure that Windows runs properly, increase the size of your paging file. |
Событие свидетельствует об исчерпании лимита фиксации памяти (Commit Limit), когда сумма физической оперативной памяти (RAM) и файла подкачки (pagefile.sys) полностью заполнена процессами или произошла утечка в невыгружаемом пуле ядра (Non-Paged Pool).
Пошаговое устранение дефицита виртуальной памяти
- Идентификация процессов с максимальным объемом выделенной памяти (Commit Size): Найдите процессы, захватившие виртуальную память:
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10 Id, ProcessName, @{N='RAM (MB)';E={[math]::Round($_.WorkingSet64/1MB,2)}}, @{N='Commit (MB)';E={[math]::Round($_.PrivateMemorySize64/1MB,2)}} | Format-Table -AutoSize - Диагностика утечек пула ядра (Poolmon): Проверьте объем невыгружаемого пула памяти. Если Non-Paged Pool превышает несколько гигабайт, локализуйте проблемный тег драйвера через утилиту Windows Driver Kit
poolmon.exe:poolmon -p -b - Корректная настройка файла подкачки (Pagefile):
- Запретите автоматический выбор маленького размера файла подкачки на системном диске.
- Задайте фиксированный размер файла подкачки (минимум 1.5x от объема физической RAM при емкостях до 32 ГБ, либо фиксированные 16–32 ГБ для больших серверов БД).
# Настройка файла подкачки 16 ГБ на диске C: через PowerShell: Set-CimInstance -Query "Select * from Win32_PageFileSetting" -Property @{InitialSize = 16384; MaximumSize = 16384} - Ограничение максимальной памяти для тяжелых служб (SQL Server): Если на сервере установлен Microsoft SQL Server, ограничьте Max Server Memory в свойствах экземпляра (оставив минимум 4–8 ГБ для нужд операционной системы).
Важно: Полное отключение файла подкачки (No paging file) в Windows Server категорически не рекомендуется даже при наличии 128+ ГБ оперативной памяти, так как ядру требуются страницы для сброса неактивных страниц и генерации дампов памяти.
Частые вопросы (FAQ)
В чем разница между физической памятью (RAM) и виртуальной памятью (Commit Charge)?
Физическая память — это объем чипов RAM. Виртуальная память (Commit Charge) — это суммарный объем памяти, который ОС гарантировала выделить процессам (RAM + Pagefile). При превышении Commit Limit приложения падают даже если RAM свободна.
Что такое утечка невыгружаемого пула (Non-Paged Pool Leak)?
Это ситуация, когда сторонний драйвер (антивирус, сетевая карта, VPN) непрерывно запрашивает память ядра и не освобождает ее. Эта память не может быть сброшена в файл подкачки.
На какой диск лучше поместить файл подкачки pagefile.sys?
Файл подкачки рекомендуется размещать на самом быстром накопителе (NVMe/SSD), желательно на отдельном томе от системного диска и файлов баз данных.
Какое сопутствующее событие фиксирует Windows при нехватке памяти?
Служба Resource-Exhaustion-Detector регистрирует событие Event ID 2004 в журнале 'Microsoft-Windows-Resource-Exhaustion-Detector/Operational' с подробным списком топ-процессов.