从某一个时间点机器的World Wide Web 发布服务 和 Web 部署代理服务异常停止,导致IIS站点无法使用 ,已确认没有人员主动停止系统服务 ,最近时间是9-14 凌晨0点10分左右 这2个服务停止
检查服务器重启:无重启记录
检查监控是否异常:查看对应时间点基础监控,cpu无波动,内存有小波动下降,外网出带宽有100k左右变化,外网入带宽有1M左右变化,内网入带宽无波动,内网出带宽有大范围波动,磁盘await和util%有大范围波动。
目前到这里可以判断大概率是os内问题
分析Windows日志:查看异常时间点有KB2267602更新,但是Windows更新是禁止的,但系统日志确实是有补丁安装成功的提示
在微软找到这个补丁的说明:https://learn.microsoft.com/zh-cn/answers/questions/3799968/windows-defender-antivirus-kb2267602-1-335-676-0-k
看到是Windows Defender 更新安全补丁,但Windows Defender更新也不会把机器进程停止???
结合上述监控分析
KB2267602更新本身不是直接原因,而是它触发的Windows Defender资源占用行为间接导致了IIS应用程序池回收。
KB2267602 是 Windows Defender 防病毒引擎和病毒定义更新。它不是一个功能性的操作系统补丁,而是提供给Windows Defender的病毒签名库更新。这类更新发布的频率非常高(通常每天一次甚至多次),目的是让Windows Defender能够识别最新的病毒、木马、勒索软件等威胁。
更新本身不直接修改IIS或.NET框架的代码,但它的安装过程会引发Windows Defender服务(MsMpEng.exe)需要重新启动(机器本身不会重启),当Defender重启后会重新扫描,会导致系统环境压力增大,IIS的Windows Process Activation Service (WAS) 会检测到资源超限,并强制回收应用程序池以保护服务器,这就是IIS应用关闭的根本原因。
另外也找到Windows Defender更新机制:Defender服务本身有一个内置的机制,会定期从Microsoft服务器检查并下载最新的定义更新,这个行为相对独立于Windows Update服务。
那就OK了,知道原因了,那后续怎么避免解决?
【解决方案】
阻止Defender更新不推荐,可以使用Defender排除项排除业务路径,避免影响
Windows Defender 是windows sever的防病毒软件,和360添加白名单类似
最简单的排除方案,可以执行powershell命令操作:
例如需要排除iis和.net,找到业务上的对应路径(例如网站目录(如 C:\inetpub\wwwroot\)、应用程序池临时文件目录(通常是 C:\Windows\Microsoft.NET\Framework…\Temporary ASP.NET Files)添加到Windows Defender的实时保护和扫描排除列表。
排除示例:
powershell.exe -Command ‘Set-MpPreference -ExclusionPath “ C:\inetpub\wwwroot", “C:\Windows\Microsoft.NET\Framework…\Temporary ASP.NET Files”‘
查看排除列表:
$WDAVprefs = Get-MpPreference
$WDAVprefs.ExclusionPath