繁体   English   中英

EventProvider构造函数抛出Win32Exception没有足够的存储空间

[英]EventProvider constructor throwing Win32Exception Not enough storage

将WCF服务从一台生产服务器移动到另一台配置非常相似的生产服务器后,通过Windows事件跟踪的自定义事件日志记录已停止工作,但仅适用于一个应用程序。

该错误正在EventProvider类的ctor中引发,它是Win32“存储空间不足”错误。

WCF服务是每个呼叫配置的“并发模式多个,每个呼叫具有实例上下文模式”线程。 在监视时,该进程属于60个线程。 每次调用都会调用EventProvider ctor。 它是由AppFabric托管的IIS / WAS。

同一台服务器上的另一个应用程序运行正常。

我不知道如何诊断。 如果有人能提出一个起点,我将不胜感激。

好的,这与VMWare配置有关。 该计算机是一台12Gb服务器,但配置为永久保留6Gb,其中6Gb是从池中提取的。 由于存在大量内存压力,并且在物理层进行交换,随机的Win32异常开始在VM中引发。 解决方案是使更多的可用内存。

更新:上面是巧合,很可能与VMWare不相关。

一个月后问题再次出现。 看来服务器上的某些更改已改变,这会减慢垃圾回收速度,并且我的每次呼叫wcf服务没有显式设置EtwRegistration处理(即,我没有显式设置EventProvider)。 实验表明,每个进程最多只能有1000个EventProvider。 服务器性能的变化导致句柄泄漏达到该限制。

进一步更新:如果有人想增加提供程序的数量,而不是出于任何原因而不是强制清除,我认为这可能会有所帮助http://support.microsoft.com/kb/2583244

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM