我有一个DAG设置,Server 2012 R2和Exchange 2013在三台服务器上运行,另一台服务器运行滞后副本.
我们似乎在所有服务器上都有一个句柄泄漏,它们是否托管数据库似乎并不重要.然而令我感到奇怪的是,手柄泄漏似乎没有拥抱大量的资源,例如随着句柄的增加,它不会使用大量的内存,即使其中一个服务器在261076处理器达到峰值,它也没有真正增加它的内存使用量.
句柄泄漏器是Windows进程LSASS,这也很令人头疼,因为虽然我正在使用Perfmon进行监视,并且我使用了RAMmap,Process Explorer等,但事实证明这是一个很难解决问题,因为LSASS本身并不是原因.什么是’使用’LSASS是问题.
我在性能故障排除方面知识渊博,但只使用.NET等内部编码.此框中的所有内容都是Microsoft.
所以我想我的问题是:
Handle Leaks和Memory Leaks有什么区别我可以在没有内存泄漏的情况下进行手柄泄漏吗?如果是这样,纯手柄泄漏加班的危险是什么?
我还能做些什么来解决这个问题?我打算安装SDK并使用UMDH和Gflags拍摄内存的快照,但它不是一个非常快速的增加,所以这将有点痛苦.
有很多信息,但不确定什么是相关的,所以你需要提出我能提供的任何东西.
谢谢,
查尔斯
句柄泄漏是内存泄漏的特例.您从一个狭义的池中泄漏内存:可用句柄集.通常,句柄是一个内存指针,在64位机器上占用8个字节.所以261076处理时间8个字节是2039kB,只差2meg.这是现代机器的口袋改变.
但是你需要注意的问题是:当你的手柄耗尽时会发生什么?您的应用如何降级?是否存在硬限制或是否在最大值之前开始突破?当超出某一点时,您能否绘制句柄数并重新启动服务?有没有办法改变句柄数量的限制来缓解问题?重启服务是修复它还是需要重启?