2013-10-18 30 views
0

將WCF服務從一個生產服務器移動到另一個生產服務器後,配置非常相似,通過Windows事件跟蹤進行的自定義事件日誌記錄已停止工作,但僅適用於一個應用程序。EventProvider構造函數拋出Win32Exception存儲空間不足

錯誤是在EventProvider類的ctor中拋出的,它是一個Win32「沒有足夠的存儲」錯誤。

WCF服務是一個'併發模式多實例上下文模式每個調用線程每個調用配置。在監視60個線程時屬於該進程。每次調用都會調用EventProvider ctor。它是由AppFabric託管的IIS/WAS。

在同一臺服務器上的另一個應用程序工作正常。

我不知道如何診斷這一點。如果任何人甚至可以提出一個起點,我會很感激。

回答

1

好的事實證明,這與VMWare配置有關。該機器是12Gb服務器,但配置爲永久保留6Gb,從池中取出6Gb。隨着大量內存壓力和物理層交換,隨機Win32異常開始在虛擬機中拋出。解決方案是提供更多的內存。

更新:上面是巧合,它最有可能與VMWare無關。

該問題在一個月後返回。看起來服務器上的東西已經改變了,這會減慢垃圾回收速度,而且我的每次調用wcf服務並沒有顯式地配置EtwRegistration句柄(即我沒有顯式地處理EventProvider)。實驗表明每個進程有1000個EventProviders的限制。服務器性能的變化導致處理泄漏達到了上限。

進一步更新:如果有人想增加而不是強制清理無論出於何種原因提供商的數量,我想這可能幫助http://support.microsoft.com/kb/2583244

相關問題