Q. vCenter Server 運作異常 Failed to connect socket?
Error Message:簡單說,平時運作正常的 vSphere 環境,突然發生 vCenter Server 所管控的 ESXi Host,突然之間一直發生「斷線 > 連線」,一開始以為可能是網路上是否有 IP 衝突 的情形發生。
但是,開始查問題時發現可能不是那麼單純。此次的實作環境當中,vCenter Server 是安裝在 Windows Server 2008 R2 SP1 作業系統當中,查看 Windows 的系統日誌,發生問題的時間點出現一堆訊息,表示「VMware VirtualCenter Server 服務意外終止」(此時所管理的 ESXi 就斷線),然後系統又自動嘗試重新啟動 (此時所管理的 ESXi 就恢復連線),然後又再次失敗 (ESXi 再次斷線)。
此外,查看 vCenter Server vpxd.log 內容後,看到如下的錯誤關鍵字:
2014-12-15T12:06:45.902+08:00 [05932 warning 'Default']
Failed to connect socket; <io_obj p:0x000000001cd2fad8, h:14380,
<TCP '0.0.0.0:0'>, <TCP '127.0.0.1:8085'>>, e: system:10055
(因為系統缺乏足夠的緩衝區空間或因為佇列已滿,所以無法在通訊端上執行操作。)
2014-12-15T12:06:45.905+08:00 [02036 warning 'Proxy Req 65775']
Connection to localhost:8085
failed with error class Vmacore::SystemException
(因為系統缺乏足夠的緩衝區空間或因為佇列已滿,所以無法在通訊端上執行操作。)
Ans:
以相關的錯誤關鍵字去找,發現了這篇 Microsoft KB 2577795 - Kernel sockets leak on a multiprocessor computer that is running Windows Server 2008 R2 or Windows 7 文章。
在該篇 KB 文章內容中有出現很重要的一段話,當 Windows Server 2008 R2 / R2 SP1 作業系統具備「多處理器 (Multi-Processor)」,且執行的應用程式會用到「Loopback」時,就很可能會出現 Error Message 10055
「An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.」。
而這段關鍵字,剛好跟 vCenter Server vpxd.log 內容中,錯誤關鍵字「因為系統缺乏足夠的緩衝區空間或因為佇列已滿,所以無法在通訊端上執行操作。」相同。並且,此實作環境當中的 vCenter Server 剛好也配置了「4 vCPU」,因此可以判斷出應該是踩到這個問題所致。
目前,便是安裝 KB 文章中所說的 Hotfix,並且持續觀察當中...