Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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

Event ID 50003 WAS: лимит виртуальной памяти пула приложений исчерпан

Обновлено: 28.08.2026  ·  Официальная база знаний

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

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

СимптомПоследствия
Внезапная перезагрузка рабочего процесса w3wp.exeОбрыв текущих транзакций и файловых загрузок клиентов
Рост использования виртуальной памяти процессаРазмер зарезервированной виртуальной памяти (Virtual Bytes) превысил заданное число КБ
Сброс данных кэша сайтаВременное падение производительности при повторном наполнении кэша

Пошаговое устранение сбоя Event ID 50003

Ограничение по виртуальной памяти (Virtual Memory Limit) является устаревшим механизмом, созданным для 32-разрядных систем. В современных 64-битных операционных системах установка этого лимита приводит к ложным срабатываниям, так как приложения .NET резервируют большие виртуальные адресные пространства без фактического расхода физической памяти RAM.

  1. Отключите лимит виртуальной памяти (установите в 0):
# Полное отключение лимита виртуальной памяти для конкретного пула (PowerShell):
& "$env:SystemRoot\System32\inetsrv\appcmd.exe" set apppool /apppool.name:"ИмяПула" /recycling.periodicRestart.memory:0
  1. Отключите лимит виртуальной памяти глобально для всех пулов сервера:
# Сброс лимита Virtual Memory в параметрах по умолчанию для IIS:
& "$env:SystemRoot\System32\inetsrv\appcmd.exe" set config -section:system.applicationHost/applicationPools /applicationPoolDefaults.recycling.periodicRestart.memory:0 /commit:apphost
  1. Проверьте фактическое потребление оперативной памяти процессом w3wp.exe:
# Мониторинг реальной физической (WorkingSet) и виртуальной (PrivateBytes) памяти IIS:
Get-Process w3wp | Select-Object Id, ProcessName, @{Name="WorkingSet_MB";Expression={[math]::round($_.WorkingSet64/1MB,2)}}, @{Name="VirtualMemory_MB";Expression={[math]::round($_.VirtualMemorySize64/1MB,2)}}

Важно: Рекомендуется ограничивать только Private Memory Limit (выделенную физическую память), если требуется сдерживать утечки памяти, а значение Virtual Memory Limit всегда оставлять равным 0 (Disabled).

Практический опыт инженера: Установка любого ненулевого значения в 'Лимит виртуальной памяти' на x64-серверах с приложениями на .NET Core или ASP.NET гарантированно приводит к циклическим рециркуляциям Event 50003. Всегда держите этот параметр равным 0.

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

В чем разница между Virtual Memory Limit и Private Memory Limit в IIS?

Virtual Memory — это общий объем виртуального адресного пространства, которое процесс зарезервировал в ОС. Private Memory — это фактический объем оперативной памяти, выделенный только данному процессу w3wp.exe.

Почему для 64-битных систем лимит виртуальной памяти не имеет смысла?

64-разрядные процессы имеют практически неограниченное адресное пространство (128 ТБ). Среда .NET CLR может зарезервировать гигабайты виртуальных страниц под кучу GC, не используя реальную RAM.

Где настроить эти ограничения в IIS Manager?

В оснастке 'Диспетчер служб IIS' откройте 'Пулы приложений' -> выберите пул -> 'Дополнительные параметры' -> раздел 'Переработка' -> установите 'Лимит виртуальной памяти (КБ)' в 0.

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

По умолчанию в современных версиях IIS этот параметр всегда установлен в 0 (отключен).