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

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

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

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

Event ID 50004 WAS: превышен лимит физической памяти пула IIS

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

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

В системном журнале System фиксируется предупреждение: Event ID 50004: A worker process serving application pool '[Имя_Пула]' requested a recycle because it reached its private memory limit от источника WAS.

СимптомПроявление
Регулярный перезапуск пула под нагрузкойПроцесс w3wp.exe утилизирует выделенный порог памяти и принудительно перезапускается
Сброс состояния пользовательских корзин/формПотеря сессий у посетителей сайта в момент перезапуска
Рост потребления RAM на сервереПосле рециркуляции потребление RAM падает, затем снова линейно возрастает

Пошаговое решение и настройка Private Memory (Event ID 50004)

  1. Скорректируйте лимит выделенной памяти (Private Memory Limit) в соответствии с объемом RAM сервера:
# Увеличение лимита выделенной памяти (Private Memory) до 4 ГБ (4194304 КБ):
& "$env:SystemRoot\System32\inetsrv\appcmd.exe" set apppool /apppool.name:"ИмяПула" /recycling.periodicRestart.privateMemory:4194304

# Либо полное отключение лимита (значение 0):
& "$env:SystemRoot\System32\inetsrv\appcmd.exe" set apppool /apppool.name:"ИмяПула" /recycling.periodicRestart.privateMemory:0
  1. Найдите причину утечки памяти с помощью счетчиков производительности:
# Мониторинг выделенной памяти пулов IIS в реальном времени:
Get-Counter '\Process(w3wp*)\Private Bytes' -SampleInterval 2 -MaxSamples 5 | ForEach-Object {
    $_.CounterSamples | Select-Object InstanceName, @{N="PrivateMemory_MB";E={[math]::Round($_.CookedValue/1MB,2)}}
}
  1. Настройте профили сборщика мусора .NET Garbage Collector: если веб-приложение работает на многопроцессорном сервере, убедитесь, что в aspnet.config или runtimeconfig.json включен серверный режим GC:
# Добавьте в конфигурационный файл приложения web.config в раздел :
# 
#   
#   
# 

Совет разработчикам: Если объем памяти w3wp.exe растет непрерывно и не освобождается сборщиком мусора, снимите дамп памяти через ProcDump -ma и откройте его в dotMemory или Visual Studio для поиска неутилизированных статических коллекций.

💡 Практика специалистов: Если на сервере крутится приложение 1С:Web-сервисы или Bitrix, лимит в 1.5–2 ГБ физической памяти является нормой. Обязательно выносите такие сайты в изолированные пулы, чтобы рециркуляция одного проекта не влияла на другие.

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

Является ли Event ID 50004 критической ошибкой?

Нет, это штатный механизм защиты сервера от полного исчерпания оперативной памяти отдельным «прожорливым» пулом приложений.

Какой объем Private Memory рекомендуется устанавливать для пула IIS?

Для небольших сайтов достаточно 1–2 ГБ (1048576–2097152 КБ). Для высоконагруженных ERP/CRM систем лимит устанавливают от 4 до 8 ГБ, либо отключают (0), если сервер имеет достаточный запас RAM.

Что происходит с входящими запросами во время рециркуляции пула?

Запросы не теряются: они временно буферизуются в очереди драйвера HTTP.sys ядра Windows до момента готовности нового процесса w3wp.exe.

В каких единицах задается параметр privateMemory в IIS?

Параметр privateMemory задается в килобайтах (КБ). Например, 1048576 КБ = 1 ГБ.

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