我们最近为我们的 Windows 工作站(大约 90 个)实施了 WSUS。有些客户端似乎没有问题,而其他客户端在尝试使用 Windows Update 手动检查更新时不断返回错误“80072EE2”。
客户端是Win7 x64 SP1,服务器是Win2008 x86 SP2
我们的工作站使用标准图像,因此系统之间的差异很小。
服务器上的 w3wp.exe 进程长时间处于 CPU 峰值很高的状态。
在问题客户端的 WindowsUpdate.log 中,我们看到:
2015-12-04 11:12:33:847 968 12ac PT Server URL = http://server.domain.com/SimpleAuthWebService/SimpleAuth.asmx
2015-12-04 11:13:37:937 968 12ac Misc WARNING: Send failed with hr = 80072ee2.
2015-12-04 11:13:37:937 968 12ac Misc WARNING: SendRequest failed with hr = 80072ee2. Proxy List used: <(null)> Bypass List used : <(null)> Auth Schemes used : <>
2015-12-04 11:13:37:937 968 12ac Misc FATAL: SOAP/WinHttp - SendRequest: SendRequestUsingProxy failed. error 0x80072ee2
2015-12-04 11:13:37:937 968 12ac PT + Last proxy send request failed with hr = 0x80072EE2, HTTP status code = 0
2015-12-04 11:13:37:937 968 12ac PT + Caller provided credentials = No
2015-12-04 11:13:37:937 968 12ac PT + Impersonate flags = 0
2015-12-04 11:13:37:937 968 12ac PT + Possible authorization schemes used =
2015-12-04 11:13:37:937 968 12ac PT WARNING: SyncUpdates failure, error = 0x80072EE2, soap client error = 5, soap error code = 0, HTTP status code = 200
2015-12-04 11:13:37:937 968 12ac PT WARNING: PTError: 0x80072ee2
2015-12-04 11:13:37:937 968 12ac PT WARNING: SyncUpdates_WithRecovery failed.: 0x80072ee2
2015-12-04 11:13:37:937 968 12ac PT WARNING: Sync of Updates: 0x80072ee2
2015-12-04 11:13:37:937 968 12ac PT WARNING: SyncServerUpdatesInternal failed: 0x80072ee2
2015-12-04 11:13:37:937 968 12ac Agent * WARNING: Failed to synchronize, error = 0x80072EE2
2015-12-04 11:13:37:937 968 12ac Agent * WARNING: Exit code = 0x80072EE2
检查 WSUS 服务器 SoftwareDistribution.log,我们看到:
2015-12-04 16:14:36.018 UTC Error w3wp.18 ClientImplementation.SyncUpdat
Syst
em.Threading.ThreadAbortException: Thread was being aborted.
at Microsoft.UpdateServices.Internal.NativeMethods.ExtractBlobFromMemoryCab
UInt32 cbCompressed, Byte* pCompressed, UInt32& pcbUncompressed, IntPtr& ppUnc
mpressed)
at Microsoft.UpdateServices.Internal.CabUtilities.ExpandMemoryCabToString(B
te[] src)
at Microsoft.UpdateServices.Internal.DataAccess.ExecuteSpGetCoreUpdateXml(I
t32[] revisionIds)
at Microsoft.UpdateServices.Internal.DataAccessCache.GetCoreUpdateXml(Int32
] revisionIds, DataAccess da, Int64 maxXmlPerRequest)
at Microsoft.UpdateServices.Internal.ClientImplementation.GetSyncInfo(Versi
n clientProtocolVersion, DataAccess dataAccess, Hashtable stateTable, Hashtabl
deploymentTable, Boolean haveGroupsChanged, Boolean driverSyncNeeded, Boolean
doChunking)
at Microsoft.UpdateServices.Internal.ClientImplementation.SoftwareSync(Data
ccess dataAccess, UnencryptedCookieData cookieData, Int32[] installedNonLeafUp
ateIds, Int32[] leafUpdateIds, Boolean haveGroupsChanged, Boolean expressQuery
Guid[] filterCategoryIds, Boolean needTwoGroupOutOfScopeUpdates)
at Microsoft.UpdateServices.Internal.ClientImplementation.SyncUpdates(Cooki
cookie, SyncUpdateParameters parameters)
at Microsoft.UpdateServices.Internal.ClientImplementation.SyncUpdates(Cooki
cookie, SyncUpdateParameters parameters)
at Microsoft.UpdateServices.Internal.Client.SyncUpdates(Cookie cookie, Sync
pdateParameters parameters)
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arg
ments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHan
le typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] argu
ents, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle type
wner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invo
eAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVi
ibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invo
eAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Web.Services.Protocols.LogicalMethodInfo.Invoke(Object target, Ob
ect[] values)
at System.Web.Services.Protocols.WebServiceHandler.Invoke()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
at System.Web.Services.Protocols.SyncSessionlessHandler.ProcessRequest(Http
ontext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpAppli
ation.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& com
letedSynchronously)
at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception err
r)
at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext c
ntext, AsyncCallback cb)
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerReque
t wr, HttpContext context)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntP
r managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 fl
gs)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr man
gedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandle
, RequestNotificationStatus& notificationStatus)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntP
r managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 fl
gs)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr man
gedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
2015-12-04 16:14:36.018 UTC Warning w3wp.18 SoapUtilities.CreateException
Throw
Exception: actor = http://server.domain.com/ClientWebService/client.asm
, ID=9b1e3f5a-f766-4ba9-bf7e-52c7cfbe1f68, ErrorCode=InternalServerError, Mess
ge=, Client=a39b9446-c45a-4060-851d-9157a2393278
我们尝试过的方法:
- 重启服务器
- 将自动更新检查更新时间从 1 小时更改为 10 小时
- 在服务器上禁用 AV 按访问扫描
- 将有问题的客户端更新为最新的 WSUS 客户端
- 手动浏览上面客户端日志中提到的 URL。(没有问题)
我对 WSUS 还不熟悉,所以不太清楚我们还能检查什么。如能得到任何帮助,我将不胜感激。
答案1
在受影响的客户端中检查注册表
HKLM/软件/政策/Microsoft/Windows/WindowsUpdate
并将 WUServer 和 WUStatusServer 的值与您的 WSUS 实际服务器名称进行比较
答案2
我最近遇到了这个确切的问题,日志中出现的错误与您看到的相同。
以下屏幕截图中的事件错误让我发现了这个问题:
事件日志中的这些错误与 Windows Process Activation Service(.NET 组件)与 WSUS 应用程序池存在问题有关。卸载 WSUS 角色后这些错误消失,但重新安装该角色后这些错误又出现了(这就是我知道这些错误是由 WSUS 而不是此服务器上的其他 Web 服务引起的)。
首先,确保KB2720211安装在 WSUS 服务器上。这是 WU 本身的安全更新。如果您的任何客户端直接从 Microsoft 更新,它们将已经拥有此更新,并且无法与您的 WSUS 服务器通信(如果安装了 WSUS 角色,则在 WSUS 服务器上检查来自 Microsoft 的更新将为您提供此更新)。
其次,强制 WSUS 重新配置 IIS。由于某种原因,重新安装该角色会导致配置不正确。在命令提示符中,键入以下内容:
C:\Program Files\Update Services\Tools\wsusutil.exe usecustomwebsite false
这会将 WSUS IIS 站点重新配置为在端口 80 上运行。然后输入:
C:\Program Files\Update Services\Tools\wsusutil.exe usecustomwebsite true
这会将 WSUS 重新配置为端口 8530。
如果您已经在端口 80 上,则请反向执行此过程。
强制 WSUS 重新配置自身似乎可以解决 IIS 配置错误导致的任何问题。
我花了将近一周的时间来解决这个问题,最终解决了这个问题。希望这对你有帮助。
答案3
上周,我第一次在网络上配置 WSUS 服务器时遇到了这个问题。我也使用 2008 R2(虚拟实例)作为服务器,并且我的所有客户端都是服务器或 Win 7 x64 计算机。
我为此奋斗了好几天,为 WSUS 本身安装了各种补丁,尝试重新配置 IIS,并查看了一遍又一遍的日志。Solarwinds 工具告诉我一切正常,没有 DNS 问题,从任何地方联系服务器上的 IIS 都没有问题。我删除了 softwaredistribution 文件夹,强制客户端检测并报告,使用了 Microsoft fixit 工具,所有那些垃圾。最后,我剩下的一半以上的主机仍然没有(永远)向服务器报告,而且没有一个能够手动检查更新,除非获得 80072EE2 的出价。
作为最后的手段,我关闭了虚拟机并创建了一个新的,这次使用 Server 2012。我从服务器管理器安装了 WSUS 角色,几分钟内一切都顺利运行。