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

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

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

0x8004106C Windows Server, AD и Роли

Таймауты WMI в Zabbix Agent (wmi.get): решение проблем мониторинга

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

Симптомы таймаутов WMI в Zabbix Agent

На сервере Zabbix элементы данных типа wmi.get[...] переходят в состояние Not Supported с ошибкой «Timeout while executing a shell script or WMI query». На стороне опрашиваемого Windows Server процесс WmiPrvSE.exe потребляет много оперативной памяти, а в журнале WMI регистрируется код 0x8004106C (WMI Quota Violation) или Event ID 5612.

СимптомГде проявляетсяПричина
Zabbix item: Not Supported (Timeout)Панель ZabbixWQL-запрос выполняется дольше установленного в zabbix_agentd.conf таймаута Timeout=3-30
Event ID 5612 WMI-ActivityЖурнал WMI-ActivityПровайдер WMI превысил квоту памяти (MemoryPerHost Limit)
WmiPrvSE.exe утечка памятиДиспетчер задачСлишком частый запуск тяжелых запросов через COM-модель старого Zabbix Agent 1

Пошаговое устранение таймаутов WMI в Zabbix

  1. Увеличьте лимит времени ответа (Timeout) в конфигурации Zabbix Agent: в файле C:\Program Files\Zabbix Agent\zabbix_agentd.conf задайте максимальный таймаут:
    Timeout=30
  2. Увеличьте квоту оперативной памяти для хоста WMI-провайдеров: по умолчанию лимит равен 512 МБ. Увеличьте его до 2048 МБ:
    $provider = Get-CimInstance -Namespace "root" -ClassName "__ProviderHostQuotaConfiguration"; Set-CimInstance -InputObject $provider -Property @{MemoryPerHost = 2147483648}; Restart-Service -Name Winmgmt -Force
  3. Оптимизируйте WQL-запросы (избегайте Win32_Product и SELECT *): всегда запрашивайте только конкретные необходимые свойства (например, SELECT FreeSpace, Size FROM Win32_LogicalDisk WHERE DeviceID='C:').
  4. Перейдите на Zabbix Agent 2 (написан на Go): агент Zabbix Agent 2 использует постоянные эффективные сессии для WMI и нативных счетчиков Perfmon, предотвращая дедлоки WMI.

Совет: Везде, где это возможно, заменяйте ключи wmi.get на нативные высокопроизводительные счетчики производительности perf_counter[...].

💡 Практика специалистов: Если опрашиваете диски и процессоры через Zabbix, никогда не используйте wmi.get. Используйте perf_counter["\LogicalDisk(C:)\% Free Space"] — это снизит утилизацию процессора агентом почти до нуля.

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

Почему ключи perf_counter работают быстрее wmi.get?

Счетчики производительности опрашиваются напрямую из разделяемой памяти ядра Windows, минуя тяжелый транслятор WMI и парсинг WQL-запросов.

Как протестировать WMI-запрос локально на клиенте с помощью zabbix_agentd?

Выполните: zabbix_agentd.exe -t "wmi.get[root\cimv2,SELECT FreeSpace FROM Win32_LogicalDisk WHERE DeviceID='C:']".

Что делать, если WmiPrvSE.exe завис на 100% CPU?

Определите проблемный процесс-клиент по ClientProcessId в журнале Microsoft-Windows-WMI-Activity/Operational (Event ID 5858).

Как перезапустить службу Zabbix Agent через PowerShell?

Выполните команду Restart-Service -Name "Zabbix Agent" -Force.

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