我需要一些“光”来获得解决方案。可能有很多事情会导致这个问题,但也许有人可以帮助我。
场景:一台Windows服务器24/7运行PostgreSQL数据库和其他服务器应用程序(用于处理数据库上的任务等)。有不同的服务器场景(~30),具有不同的硬件和Windows版本(XP SP3 / WinServer等...所有基于NT)。所有应用程序都是用Delphi7编写的,并链接到DLL(在D7中也是如此)。
几天后(有时一周,有时几个月),Windows开始变得奇怪,就像没有打开开始菜单一样,对话框中缺少一些按钮。很快一些应用程序无法打开,在事件查看器上发起了一个事件:
Faulting application x, version y, faulting module kernel32.dll, version 5.1.2600.5781, fault address 0x00012afb
同时,其他应用程序打开正常,如记事本,iexplore等...但我的一些应用程序没有,只有上面描述的事件日志。但是如果我们不重新启动系统,在几天内甚至cmd.exe会在事件日志中停止打开(和所有其他应用程序)同样的错误。
我试图找到'什么'可以导致这种情况,但没有成功。所以,欢迎任何建议。
提前致谢。
答案 0 :(得分:4)
我认为你的资源句柄(Window句柄)已经用完了。您可以通过查看Sysinternals Process Explorer(更好的任务管理器)中的系统属性来验证这一点。我认为即使是默认的任务管理器也可以帮助显示句柄计数。然后,您可以确定导致问题的应用程序。
一旦您知道应用程序泄漏以及是否属于您的应用程序,您可以使用Rational purify或Boundschecker深入查看问题。如果你没有钱购买这些工具,你必须通过停用一些功能来手动减少问题,例如看看手柄数是否仍在增加...
不确定您遇到的问题是否完全无关。但很容易检查。由于您遇到其他应用程序的问题,一些应用程序正在窃取一些全局资源。像记事本这样的应用程序不会占用太多资源,所以看起来工作正常,重型应用程序更容易出现问题。
希望它有所帮助。