Antimalware Service Executable高CPU占用阻断IIS .Net应用运行
Windows Server 2019 IIS触发Defender高CPU占用修复方案
以下方案按优先级排序,优先执行前置步骤快速恢复业务,再完成根因修复。
1. 紧急止血(1分钟恢复业务可用性)
精准配置Defender排除项,避免整盘排除带来的安全风险:
- 进程排除:将
w3wp.exe(IIS工作进程)、dotnet.exe(.NET/.NET Core宿主进程)加入Defender进程排除列表 - 路径排除:加入以下路径到排除列表:
- IIS站点实际部署目录
- .NET Framework临时编译目录:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\(可根据安装的Framework版本调整对应路径) - .NET Core/.NET 5+运行时目录:
C:\Program Files\dotnet\ - IIS系统日志目录:
C:\inetpub\logs\
- 配置入口:Windows安全中心 > 病毒和威胁防护 > 管理设置 > 添加或删除排除项,配置后即时生效,无需重启服务。
2. 根因修复
该问题是Windows Server 2019旧版本Defender的已知bug:旧版本Defender的实时扫描钩子在监控IIS进程内存读写时会进入死循环,只要有请求触发w3wp.exe加载程序集就会启动全量扫描,可通过以下步骤彻底修复:
- 更新Defender平台与病毒库版本
以管理员身份打开PowerShell,执行以下命令查看当前版本:
如果Get-MpComputerStatus | Select-Object AMProductVersion,AntivirusSignatureVersionAMProductVersion版本号低于4.18.2300.0,执行以下命令立即更新:Update-MpSignature Restart-Service WinDefend -Force - 调整Defender实时扫描配置,避免不必要的进程扫描
管理员身份执行以下PowerShell命令:# 关闭网络文件扫描,避免公网请求触发流量扫描 Set-MpPreference -DisableScanningNetworkFiles 1 # 配置实时扫描仅监控写入磁盘的文件,不反复扫描进程运行时内存 Set-MpPreference -RealTimeScanDirection 1 # 关闭压缩包递归扫描,避免站点静态资源包触发全量扫描 Set-MpPreference -DisableArchiveScanning 1 - 调整.NET发布配置
如果开启了Razor页面/视图运行时动态编译,运行过程中会频繁生成临时DLL触发扫描,发布时选择预编译模式,关闭运行时编译选项即可。
3. 验证与进一步排查
- 配置完成后重启IIS站点,发起测试请求,正常情况下Antimalware Service Executable CPU占用应低于5%,API可正常响应
- 如果问题复现,打开事件查看器,定位到
应用程序和服务日志 > Microsoft > Windows > Windows Defender > Operational,查看扫描事件的具体目标对象,针对性补充排除项即可 - 排查服务器上安装的第三方安全插件、服务器管理面板安全模块,这类组件Hook w3wp.exe进程的行为也会触发Defender反复扫描,临时卸载后可验证问题源。
附问题现场任务管理器异常占用截图:
内容的提问来源于stack exchange,提问作者shab
相关产品推荐
相关产品推荐

