我有一个服务器,正在积累句柄在系统进程又名c:\ windows \ system32 \ ntoskrnl.exe。 手柄在一天内达到18,000,并以这个速度永远保持。 服务器运行Postgresql 9.0.3,插入数据库的asp.net web服务,以及查询数据库的asp.net网站。 Web服务通过gSOAP从Linux和Windowstesting机器访问。 我在System进程上运行了Process Explorer,额外的句柄被列为Type Key。 我发现他们在regiedt。 这里有两个从regedit导出的例子。
1。
Key Name: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{2e167ea7- 85e3-4395-995a-77af9875d79a}\InprocServer32 Class Name: <NO CLASS> Last Write Time: 7/13/2009 - 10:53 PM Value 0 Name: <NO NAME> Type: REG_EXPAND_SZ Data: %systemroot%\system32\colbact.dll Value 1 Name: ThreadingModel Type: REG_SZ Data: Both
2。
Key Name: HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{91162401-6E6B-478A-A7FF-994EBA35B9C3} Class Name: <NO CLASS> Last Write Time: 7/13/2009 - 10:54 PM Value 0 Name: <NO NAME> Type: REG_SZ Data: PSFactoryBuffer Key Name: HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{91162401-6E6B-478A-A7FF-994EBA35B9C3}\InProcServer32 Class Name: <NO CLASS> Last Write Time: 7/13/2009 - 10:54 PM Value 0 Name: <NO NAME> Type: REG_EXPAND_SZ Data: %SystemRoot%\system32\ime\shared\imeapis.dll Value 1 Name: ThreadingModel Type: REG_SZ Data: Both
插入到数据库中的Web服务全天执行大约13万次。 一个插入包括一个在内部网上运行windows或linux的虚拟机,通过gSOAP和testing结果数据调用web服务function。 数据是string和数字。 Web服务打开数据库连接,将数据插入数据库并closures连接。 有问题的数据库是150千兆字节大。 我已经浏览了数据库使用代码,它是C#,并且每个数据库连接都被closures,就我所见。 服务器function工作正常,除了手柄积累。
当手柄大约15万时,网站开始出现奇怪的现象,我必须重新启动,这是有问题的,因为testing机器正在用testing结果轰炸Web服务。
什么可能导致处理积累? 任何帮助将不胜感激。 谢谢。
事实certificate,处理漏洞来自SaferNet公司的许可证pipe理程序中的驱动程序。SmartBear软件的AQTime使用这个许可证pipe理器,这就是我们如何得到它的。 我正在与SmartBear一起处理这个问题。
我能够精确地指出registry打开,而不是使用Sysinternals中的进程监视器closures。 然后,我查看了有关句柄的调用堆栈,并从SaferNet调用ntoskrnl的驱动程序。
最后,这个问题与IIS,gSOAP或postgresql无关。
SmartBear的人提供了一个新的许可证pipe理器。 我把它安装在旧的上面,泄漏消失了。