安装一个基于 Windows Server 2016 的新环境,该环境中的部分服务器位于无法连接到互联网的网络上,我们在一台具有两张网卡(双网卡)的服务器上安装了 Windows Server Update Services (WSUS),其中一张网卡可以连接到互联网下载更新,并通过另一张网卡(专门配置为不路由流量)将更新提供给其余服务器。配置完成后,所有计算机都会向 WSUS 服务器报告自身,但从未下载过更新。
我们最终发现,我们启用的“不允许更新延迟策略导致针对 Windows 更新的扫描”策略会强制非互联网可访问段上的服务器和工作站进一步使用本地 WSUS 服务器。在这种配置下,我们的 Windows 10 工作站可以完全运行,但 Windows Server 2016 机器仍然持续出现故障。
我们最终发现,与 WSUS 站点关联的 AppPool 的“私有内存限制”太小,无法完成 Windows Server 2016 扫描。WSUS 安装的默认限制大约为 2.8GB。建议设置为“0”(无限制)。观察一台 Windows Server 2016 计算机的扫描表明,每台 Windows Server 2016 计算机在更新的“扫描”阶段将占用超过 6GB 的内存。有证据表明我们的服务器不会将此内存需求“分页”到磁盘,因此我们也增加了物理内存。扫描阶段持续完成后,服务器开始下载更新,但操作系统累积补丁始终无法应用。我们使用 Get-WindowsUpdateLog 命令尝试找出发生了什么,但生成的日志没有指向问题。我们查看了其他日志和事件,在 Google 上搜索了更新失败的返回代码(0x800705b4),但没有找到解决方案/指针。出于无奈,我们推测更新超时是由于 Windows Defender 的活动。注意:我们最终会通过从 Microsoft 下载这些更新来手动安装它们,并且每次我们尝试手动安装它们时,它们都会顺利安装。
基于我们处理超时的假设,我们禁用了 Windows Defender 的“实时保护”,这显然会减慢安装速度。禁用实时保护后,它似乎加快了安装速度,足以让安装完成。我们进行了一次迭代,但随后我们重新启用了实时保护。
最后一个问题:有没有办法增加 Windows Update 应用其更新的时间?或者是否有关于如何自动应用这些大型更新的最佳实践?