MS Access:100% CPU 使用率
我们有一个带有 SQL Server 的 MS Access 2003 ADP 应用程序。有时,在没有任何明显原因的情况下,该应用程序开始消耗 100% 的 CPU 时间(在双核 CPU 系统上为 50%)。无论如何,这就是 Windows 任务管理器和其他进程监视/分析工具所显示的内容。通常,停止此类 CPU 抖动的唯一方法是重新启动应用程序。
我们仍然不知道如何随意触发这个问题。但我有一种感觉,当某些表单被用户关闭时,通常会发生这种情况。
注意:最近我们注意到,其中一种表单在最小化时始终会使 CPU 使用率上升到 100%。大多数情况下,当该表单“未最小化”时,CPU 使用率会恢复正常。也许,这是一个不同的问题,但我们也想揭开这个谜团。 :)
谷歌搜索这个问题的解决方案并没有产生很好的结果。最常见的理论是 MS Access 进入某种等待事件循环,这实际上是无害的,从性能角度来看,因为运行该循环的线程具有非常低的优先级。这似乎对我们没有帮助,因为在我们的案例中,(a) 它确实会损害系统的性能,(b) 目前还不清楚到底是什么导致 Access 进入这种“不良状态”以及如何避免这种情况。
We have an MS Access 2003 ADP application with SQL Server. Sometimes, without any apparent reason, this application starts consuming 100% of CPU time (50% on a dual-core CPU system). This is what Windows Task Manager and other process monitoring/analysis tools are showing, anyway. Usually, the only way to stop such CPU thrashing is to restart the application.
We still don't know how to trigger this problem at will. But I have a feeling that it usually happens when some of the forms get closed by a user.
NB: Recently we noticed that one of the forms consistently makes CPU usage raise to 100% whenever it gets minimized. Most of the time CPU usage goes back to normal when that form is "un-minimized". Perhaps, it's a different problem, but we'd like to uncover this mystery, too. :)
Googling for a solution of this problem didn't yield very good results. The most frequent theory is that MS Access gets into some sort of waiting-for-events loop which is practically harmless, performance-wise, because the thread running that loop has very low priority. This doesn't seem to help us because in our case (a) it certainly does hurt the system's performance and (b) it's still unclear what exactly makes Access to get into such "bad state" and how to avoid that.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我过去曾经遇到过这个 CPU 使用问题,但我不记得我们是否找到了解决方案,或者它在某个时候就消失了。
在您的帖子中,您没有提到审查 VBA。我建议寻找一个在某些条件下成为无限循环的循环。
I've gotten this CPU usage problem before in the past, but I don't remember if we ever discovered a solution or it just went away at some point.
In your post, you didn't mention reviewing the VBA. I'd recommend looking for a loop that under certain conditions becomes an endless loop.
我想知道这是否是“旧”时代访问所遇到的这个问题的后遗症
http:// support.microsoft.com/kb/160819
虽然文章确实说它在版本 >=2000 中已修复,但它仍然可能是问题。
I wonder if it is a hangover from this problem that access used to have in the "old" days
http://support.microsoft.com/kb/160819
Whilst the article does say it is fixed in versions >=2000 it still might be something.