此问题只会影响在 Windows Vista 或 Windows Server 2008 上运行的 vCenter Server。在负载过重的情况下,vCenter Server 上调用的某些操作会失败,且错误描述会指出 HTTP 错误503 服务暂时不可用 (503 Service Temporarily Unavailable)。具体的错误消息可能因客户端不同而异,因为消息由客户端生成。
vpxd日志文件包含指示插槽连接尝试由于超时而失败的条目。如果在出现错误后立即在 vCenter Server 主机上运行 netstat -an,将显示多个连接,其中一端是环回上的端口 8085,另一端是环回上的其他端口。其中某些连接将处于TIME_WAIT状态。
vCenter Server 使用环回 (localhost) 上用于进行远程过程调用 (RPC) 的 TCP 连接以分派客户端请求和与 vCenter Server 辅助服务通信。因此,在负载过重的情况下,vCenter Server 会创建多个本地 TCP 连接,然后关闭这些连接并打开新连接。某些已关闭的连接在服务器端保持打开状态,处于TIME_WAIT状态一段时间(默认 Windows 设置是 4 分钟)。由于客户端端口数量受限制,如果 vCenter Server 使用连接的速度够快,在某些时候,当服务器端仍拥有此客户端端口的处于TIME_WAIT状态的连接时,客户端会尝试重用端口。
通常,此情况应提示服务器关闭旧连接并接受新连接。但是在 Windows Vista 或 Windows Server 2008 上,TCP 堆栈中已记录的漏洞反而可能会导致服务器端忽略连接请求。如果出现此情况,客户端会重试几次,然后超时。在这种情况下,vCenter Server 调度程序无法联系服务,并向客户端返回 503 Service Unavailable 错误,然后客户端请求失败。