Главная > Active Directory, Проблемы / ошибки > Ошибка: Сервер не смог выделить память из выгружаемого пула памяти, так как выгружаемый пул пуст

Ошибка: Сервер не смог выделить память из выгружаемого пула памяти, так как выгружаемый пул пуст

Недавно столкнулся с такой проблемой: на сервере под управлением Windows 2003 Server отваливались все сетевые шары, но при этом он продолжал пинговаться и  все службы (в том числе и клиент-серверные приложения) работали нормально.

После перезагрузки какое-то время всё  работало нормально, но со временем всё повторялось. При анализе журнала событий системы было выявлено, что перед тем как «поломаться» в журнале появлялось сообщение об ошибке: «Сервер не смог выделить память из выгружаемого пула памяти, так как выгружаемый пул пуст».

 

Яндекс с Гуглом в первую очередь рекомендовали почитать вот эту статью, в которой описана данная проблема с вариантами решений. Судя по описанию такая проблема может возникать когда на сервере открыто слишком большое количество файлов. Подтвердить, или опровергнуть это не удалось, так как при регистрации этой ошибки посмотреть кто юзает какие файлы невозможно — при попытке открыть «Открытые файлы» в консоли управления компьютером выпадало сообщение «Недостаточно системных ресурсов для завершения операции».

Microsoft предлагает следующие варианты решения данной проблемы:

Перейти в раздел реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management и создать там параметр PoolUsageMaximum, типа REG_DWORD, присвоить ему значение 60 в десятичной системе счисления.

В данном случае диспетчер памяти начнет урезать память, когда уровень использования достигнет 60% от PagedPoolMax (а не 80%, как это установлено по умолчанию). Если при пиковой нагрузке этого недостаточно, рекомендуется сократить это значение до 50% или 40%.

Что и было сделано, но ни 60, ни 50, ни 40 не принесли результата — шары всё так же отваливались.

Тогда было решено попробовать второй вариант.

В том же разделе реестра (HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management) параметру PagedPoolSize присвоить значение 0xFFFFFFFF (естественно в шестнадцатеричной системе счисления). Несмотря на предупреждения о том, что «Присвоение параметру PagedPoolSize значения 0xFFFFFFFF приводит к максимальному увеличению размеров выгружаемого пула за счет других ресурсов компьютера«, и «Значение 0xFFFFFFFF параметра PagedPoolSize не рекомендуется использовать на компьютерах с 64 ГБ ОЗУ с 32-разрядной версией системы Windows Server 2003. Это может привести к уменьшению количества свободных элементов таблицы страниц и непрерывной перезагрузке компьютера» изменение PagedPoolSize решило проблему — после перезагрузки сервер исправно работает.

  1. Комментариев нет.
  1. No trackbacks yet.

Оставьте комментарий