O Antimalware Service Executable (MsMpEng.exe), do Microsoft Defender Antivirus, pode atingir ~100% de CPU no Windows Server 2019 e tornar o servidor lento ou quase inacessível. Este guia prático mostra como reduzir o consumo sem comprometer a segurança.
Visão geral da pergunta
O processo Antimalware Service Executable (MsMpEng.exe
), componente do Microsoft Defender Antivirus, consome praticamente toda a CPU em um Windows Server 2019. O objetivo é diminuir o impacto sem abrir brechas de segurança, preferindo medidas seguras, auditáveis e reversíveis.
Roteiro de resposta (do mais seguro/comum ao mais intrusivo)
Execute cada passo durante uma janela de manutenção e valide o efeito antes de avançar. Se possível, registre métricas (PerfMon/contador de processo) por 10–15 minutos após cada mudança.
Confirmar a origem da carga
- Verifique se há varredura em andamento (completa ou agendada):
- Event Viewer → Applications and Services Logs → Microsoft → Windows → Windows Defender → Operational (observe eventos de início/fim de varredura).
- Task Scheduler → Microsoft → Windows → Windows Defender → “Windows Defender Scheduled Scan”.
- PowerShell — estado do Defender e assinaturas:
Get-MpComputerStatus | fl AMServiceEnabled,AntivirusEnabled,FullScanStartTime,FullScanEndTime,QuickScanStartTime,AntivirusSignatureVersion
- Métricas — confirme que a carga é do
MsMpEng.exe
:# % de CPU do MsMpEng em tempo real Get-Counter '\Process(MsMpEng)\% Processor Time' -SampleInterval 2 -MaxSamples 15 Uso cumulativo de CPU (segundos) Get-Process -Name MsMpEng | Select-Object ProcessName,CPU,SI,Id
Medidas imediatas de baixo risco
Atualizar engine e assinaturas
Definições desatualizadas e plataformas antigas podem causar reprocessamento intenso. Atualize primeiro:
Update-MpSignature
Opcional (reparar definições se suspeitar de corrupção)
$mp=@('%ProgramFiles%\Windows Defender\MpCmdRun.exe',
"$env:ProgramData\Microsoft\Windows Defender\Platform\*\MpCmdRun.exe") |
Get-Item -ErrorAction SilentlyContinue | Select-Object -First 1 -Expand FullName
& $mp -RemoveDefinitions -All
& $mp -SignatureUpdate
Dica: garanta que o Windows Update aplique a plataforma do Defender (não apenas definições).
Limitar o uso de CPU durante varreduras
- GPO: Computador → Modelos Administrativos → Componentes do Windows → Microsoft Defender Antivirus → Verificação (Scan) → “Especificar a % máxima de CPU durante uma verificação”. Defina 20–40% conforme sua janela de manutenção e I/O.
- PowerShell (equivalente):
Set-MpPreference -ScanAvgCPULoadFactor 30 # 30% é um exemplo seguro
Agendar verificações fora do horário de pico
Ajuste a tarefa Windows Defender Scheduled Scan para a madrugada ou finais de semana. Em servidores críticos, agendar Quick Scan com frequência maior e Full Scan em janelas mais longas costuma equilibrar segurança e desempenho.
Importante: evite marcar “Executar com privilégios mais altos” se isso provocar consumo agressivo. Garanta também que a tarefa não reinicie em caso de perda de janela sem um limite claro.
Aplicar exclusões cirúrgicas (apenas o necessário)
Para servidores de carga (SQL, Exchange, Hyper‑V, backup), adicione exclusões específicas para os caminhos de dados e processos do workload, minimizando varredura de arquivos grandes e altamente mutáveis.
Add-MpPreference -ExclusionPath "D:\SQLData","D:\SQLLogs","D:\HyperV\VMs","D:\Backups"
Add-MpPreference -ExclusionProcess "sqlservr.exe","vmms.exe","vmwp.exe","backup.exe"
Observação: exclusões amplas reduzem a proteção. Prefira caminhos e processos de dados (não pastas do SO). Documente e audite todas as exclusões.
(Opcional e contextual) Evitar varredura de arquivos de rede
Em servidores que apenas leem dados de compartilhamentos remotos (e já há proteção no servidor de arquivos), considere:
Set-MpPreference -DisableScanningNetworkFiles $true
Use com cautela: esse ajuste pode reduzir a visibilidade de ameaças oriundas de shares não confiáveis.
Investigar conflitos e serviços de terceiros
Drivers e serviços (antivírus adicional, agentes de backup, DLP, filtros) podem provocar revarreduras ou loop de acesso a arquivos. Faça um Clean Boot controlado para isolar:
- Abra
msconfig
→ guia Serviços → marque “Ocultar serviços Microsoft” → Desativar tudo (apenas para teste em ambiente controlado). - Reinicie e valide o consumo.
- Reative em grupos até identificar o componente causador.
Em servidores, esse procedimento exige planejamento. Considere testar em um nó do cluster por vez ou em janela dedicada.
Ajustes avançados (avaliar risco/necessidade)
Desativar temporariamente a proteção em tempo real (teste)
Útil para confirmar se a carga vem da proteção em tempo real. Desative, teste e reative imediatamente:
Set-MpPreference -DisableRealtimeMonitoring $true
... valide comportamento por poucos minutos ...
Set-MpPreference -DisableRealtimeMonitoring $false
Desabilitar “catch‑up scans” (pós-janelas perdidas)
Evita varreduras pesadas disparadas imediatamente após um reboot ou janela perdida:
Set-MpPreference -DisableCatchupFullScan $true
Set-MpPreference -DisableCatchupQuickScan $true
Mantenha uma verificação agendada em horário apropriado para não acumular risco.
Recriar a tarefa agendada de varredura
Se a tarefa estiver corrompida ou com parâmetros inadequados, recrie-a no Task Scheduler ou defina via GPO. Valide Triggers, Conditions (evitar “Stop if running longer than…” excessivamente curto) e Settings.
Reparar a imagem do sistema (casos de corrupção)
Se notar erros anômalos nos logs do Defender, considere reparar a imagem do Windows:
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
Reinstalar/atualizar a plataforma do Defender
Plataformas muito antigas podem apresentar consumo anormal. Em ambientes offline, atualize pela imagem de plataforma mais recente disponível na sua organização. (Sem links externos; siga seu repositório interno.)
Substituir a função de segurança (último recurso)
Só remova o recurso do Microsoft Defender se houver uma solução corporativa equivalente, aprovada e gerenciada centralmente. Ao migrar, evite coexistência prolongada de dois antivírus residentes.
# Avalie o impacto em políticas corporativas e MDE/Intune antes de executar.
Uninstall-WindowsFeature -Name Windows-Defender,Windows-Defender-GUI
Não recomendado como primeira medida.
Tabela: mapeamento rápido (GPO × PowerShell)
Objetivo | Diretiva (GPO) | PowerShell | Observações |
---|---|---|---|
Limitar CPU do scan | Defender → Verificação → % máxima de CPU | Set-MpPreference -ScanAvgCPULoadFactor 20..40 | Comece em 30% e ajuste conforme I/O. |
Desabilitar catch‑up scans | Defender → Verificação → Catch-up | Set-MpPreference -DisableCatchupFullScan $true Set-MpPreference -DisableCatchupQuickScan $true | Agende varreduras em horário de baixa carga. |
Exclusões de caminho | Defender → Exclusões | Add-MpPreference -ExclusionPath "D:\Dados" | Exclusões cirúrgicas e auditadas. |
Exclusões de processo | Defender → Exclusões | Add-MpPreference -ExclusionProcess "sqlservr.exe" | Preferível para workloads intensos. |
Atualizar assinaturas | Windows Update/WSUS | Update-MpSignature | Priorize também a plataforma do Defender. |
Evitar scan de arquivos de rede | Defender → Verificação | Set-MpPreference -DisableScanningNetworkFiles $true | Aplique apenas onde já exista proteção no servidor de arquivos. |
Exclusões recomendadas por workload (exemplos)
Ajuste nomes de pastas conforme seu padrão. Prefira caminhos de dados e processos ao invés de excluir extensões genéricas.
SQL Server
- Caminhos:
D:\SQLData
,D:\SQLLogs
,D:\SQLTempDB
,D:\Backups
- Processos:
sqlservr.exe
, (opcional)fdhost.exe
se usar Full-Text Search - Observações: Base de dados e logs são grandes e com I/O intensivo; evitar varredura a cada escrita reduz spikes.
Hyper‑V
- Caminhos: diretórios de
.VHD/.VHDX
, snapshots e checkpoint, por ex.D:\HyperV\VMs
- Processos:
vmms.exe
,vmwp.exe
- Observações: Excluir repositório das VMs evita varredura de discos virtuais gigantes.
Servidores de Backup
- Caminhos:
D:\Backups
, repositórios de block storage e cache de agentes - Processos: binários do agente (
backup.exe
como placeholder) - Observações: Repositórios sofrem escrita volumosa; manter proteção no endpoint de origem e na restauração.
Exchange (quando aplicável)
- Caminhos: bancos de dados e logs do Exchange
- Processos:
Store.exe
,MSExchangeIS.exe
,edgetransport.exe
- Observações: Revise sua matriz de segurança; exclusões incorretas podem degradar fila de transporte.
Comandos úteis de verificação
# Preferências atuais (exclusões e limites)
Get-MpPreference | fl Exclusion,ScanAvgCPULoadFactor,DisableCatchup
Forçar uma verificação rápida (para testar agendamento/impacto)
Start-MpScan -ScanType QuickScan
Listar ameaças detectadas recentemente
Get-MpThreat | Select ThreatName,ActionSuccess,InitialDetectionTime | Sort InitialDetectionTime -Descending
Validação objetiva: como medir a melhora
- Antes de aplicar um ajuste, colete 2–5 minutos de métricas:
logman create counter MsMpEngCPU -c '\Process(MsMpEng)\% Processor Time' -si 00:00:05 -o C:\Temp\MsMpEngCPU.blg -f bincirc -max 10 logman start MsMpEngCPU
- Após o ajuste, mantenha a coleta por 10–15 minutos e então:
logman stop MsMpEngCPU relog C:\Temp\MsMpEngCPU.blg -o C:\Temp\MsMpEngCPU.csv -f csv
- Compare os picos e a média de % Processor Time do processo
MsMpEng
.
FAQ rápido
Posso desativar o Microsoft Defender permanentemente?
Não é recomendado. Sem uma solução equivalente, você aumenta a superfície de ataque. Desative apenas temporariamente para diagnóstico e restaure em seguida.
Exclusões por extensão são uma boa ideia?
Evite excluir extensões genéricas (ex.: .zip
, .iso
) pois abrangem muitos vetores de ataque. Prefira caminhos de dados e processos específicos do workload.
As políticas locais estão sendo ignoradas. Por quê?
Se o servidor é gerenciado por MDM/Intune/Defender for Endpoint, Tamper Protection e políticas de segurança podem sobrepor GPO/local. Ajuste na origem (consoles corporativos) ou desabilite temporariamente a proteção contra adulteração para alterações planejadas.
O que é “catch‑up scan”?
É uma verificação iniciada automaticamente quando uma varredura agendada foi perdida (ex.: o servidor estava desligado). Em sistemas ocupados, isso pode gerar pico logo após o boot.
Agendo Quick ou Full Scan?
Use Quick Scan com maior frequência (baixa duração) e Full Scan apenas em janelas de manutenção estendidas, combinando com proteção em tempo real e atualizações diárias.
Modelo de execução (passo a passo sugerido)
- Confirmar a causa: verifique logs do Defender, tarefa agendada e contadores de desempenho para isolar o
MsMpEng.exe
. - Atualizar: aplique
Update-MpSignature
; se necessário, remova e baixe novamente as definições viaMpCmdRun.exe
. - Limitar CPU: defina
-ScanAvgCPULoadFactor
por GPO/PowerShell (ex.: 30%). - Agendar scans: mova para a madrugada; iniba “catch‑up scans” automáticos.
- Exclusões cirúrgicas: adicione caminhos e processos dos workloads (SQL, Hyper‑V, Backup, etc.).
- Checar conflitos: teste Clean Boot controlado para identificar componentes que provocam revarredura.
- Ajustes avançados: reparo de imagem (SFC/DISM), recriar tarefa, revisar configuração gerenciada (MDE/Intune/WSUS).
- Último recurso: substituir o Defender por solução corporativa equivalente (evite coexistência de motores).
Boas práticas e armadilhas comuns
- Evite scans completos durante backup: combine agendas para não competir por I/O.
- Não exclua o SO: nunca exclua
C:\Windows
ouC:\Program Files
inteiros. - Documente e audite exclusões: registre motivo, data e responsável. Revise periodicamente.
- Padronize via GPO: aplicar manualmente em cada servidor aumenta risco de desvio.
- Atualizações de plataforma: mantenha a plataforma do Defender (não só assinaturas) atual para melhorias de desempenho.
- Monitore: um conjunto de contadores (CPU do processo, filas de disco, IOPS do volume de dados) ajuda a prever e evitar gargalos.
Causas comuns (para orientar o diagnóstico)
- Varredura completa coincidindo com alta carga de I/O (backups, compactações, repositórios enormes).
- Definições/engine desatualizadas causando reprocessamento.
- Falta de exclusões adequadas para papéis de servidor (SQL/Exchange/Hyper‑V/Backup).
- Tarefa agendada com “Run with highest privileges” e sem limitação de CPU.
- Conflitos com drivers/serviços de terceiros (antivírus adicional, filtros de backup, DLP).
Checklist de encerramento
- Assinaturas e plataforma atualizadas.
- CPU limitada para scans (
-ScanAvgCPULoadFactor
). - Agendamento em janela de manutenção, catch‑up controlado.
- Exclusões específicas e auditadas para os workloads.
- Sem conflitos com outros agentes/antivírus.
- Logs limpos e métricas estáveis após 24–48h.
Resumo executivo
- Confirme que o pico vem de varredura e atualize o Defender.
- Limite a CPU e agende scans fora do horário crítico.
- Aplique exclusões específicas ao workload (SQL/Hyper‑V/Backup).
- Procure e elimine conflitos (Clean Boot controlado).
- Use desativação temporária apenas para teste; evite remover o Defender sem substituto corporativo.
Seguindo este roteiro, a maioria dos ambientes reduz drasticamente os picos de CPU do MsMpEng.exe
sem abrir mão da segurança.
Anexos práticos (copiar e usar)
Script: limitar CPU, agendar e excluir caminhos (exemplo)
# 1) Cap do uso de CPU do scan
Set-MpPreference -ScanAvgCPULoadFactor 30
2) Evitar catch-up scans imediatos
Set-MpPreference -DisableCatchupQuickScan \$true
Set-MpPreference -DisableCatchupFullScan \$true
3) Exclusões cirúrgicas (ajuste caminhos/processos)
Add-MpPreference -ExclusionPath "D:\SQLData","D:\SQLLogs","D:\HyperV\VMs","D:\Backups"
Add-MpPreference -ExclusionProcess "sqlservr.exe","vmms.exe","vmwp.exe","backup.exe"
4) Atualizar assinaturas
Update-MpSignature
5) Validar preferências
Get-MpPreference | fl Exclusion\,ScanAvgCPULoadFactor,DisableCatchup\
Script: validação rápida do impacto
$before = (Get-Counter '\Process(MsMpEng)\% Processor Time' -SampleInterval 2 -MaxSamples 30).CounterSamples.CookedValue
"Media antes: {0:n2}%" -f ($before | Measure-Object -Average | Select -ExpandProperty Average)
... aplique ajustes ...
$after = (Get-Counter '\Process(MsMpEng)\% Processor Time' -SampleInterval 2 -MaxSamples 30).CounterSamples.CookedValue
"Media depois: {0:n2}%" -f ($after | Measure-Object -Average | Select -ExpandProperty Average)
Script: recriar verificação rápida sob demanda (tarefa agendada)
$taskName = '\Microsoft\Windows\Windows Defender\QuickScanOnDemand'
$action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument '-NoLogo -NonInteractive -WindowStyle Hidden -Command "Start-MpScan -ScanType QuickScan"'
$trigger = New-ScheduledTaskTrigger -Once -At ((Get-Date).AddMinutes(5))
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable
Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Settings $settings -Description 'Quick Scan do Defender sob demanda'
Conclusão: com atualização da plataforma, limitação de CPU, agendamento inteligente e exclusões focadas, você diminui o consumo do Antimalware Service Executable
no Windows Server 2019 preservando a postura de segurança. Use os scripts e tabelas acima como base para padronizar e auditar suas mudanças.