服务器的CPU使用率高通常可以归因于一些系统进程,其中包括Dllhost进程和Services进程。以下是对这两个进程导致高CPU使用率的问题及相应的解决方法的详细说明:
1. Dllhost进程:
特征:正常情况下,服务器的CPU使用率应该在75%以下,并且应该有上下波动。然而,出现问题的服务器上,CPU使用率会突然达到100%,并且持续保持在该水平,不会降下来。在任务管理器中查看,可以发现DLLHOST.EXE进程占用了所有的CPU空闲时间。管理员在这种情况下只能重新启动IIS服务,奇怪的是,重新启动IIS服务后一切正常,但问题可能会在一段时间后再次出现。
直接原因:一个或多个ACCESS数据库在多次读写过程中损坏,当微软的MDAC系统尝试写入这些损坏的ACCESS文件时,ASP线程会进入阻塞状态,导致其他线程只能等待。这导致了IIS的死锁,使得全部CPU时间都被DLLHOST进程消耗。
解决办法:安装名为"一流信息监控拦截系统"的软件,并使用其中的"首席文件检查官IIS健康检查官"功能。启用"查找死锁模块",并设置监控的目录路径。当问题出现时,停止IIS服务,运行"首席文件检查官IIS健康检查官",它会在生成的日志文件(logblock.htm)中记录最后写入的ACCESS文件。定位到最后的十个文件中可能有问题的文件,通常是计数器类的ACCESS文件,例如"**COUNT.MDB"或"**COUNT.ASP"。首先将这些文件删除到回收站,然后重新启动IIS,观察问题是否再次出现。一旦找到问题所在,可以删除该文件或使用ACCESS 2000进行修复,从而解决问题。
2. Services进程:
症状:在基于Windows 2000的计算机上,Services.exe进程的CPU使用率可能间歇性地达到100%,并且计算机可能停止响应(挂起)。出现此问题时,连接到该计算机的用户(如果它是文件服务器或域控制器)会被断开连接,可能需要重新启动计算机。这种状况出现是因为Esent.dll错误地处理将文件刷新到磁盘的方式。
修复程序信息:Microsoft提供了受支持的修补程序来解决这个问题。然而,该修补程序只是为了解决本文所描述的特定问题。只有在计算机遇到本文提到的特定问题时才应用此修补程序。此修补程序可能还经过其他一些测试。因此,如果该问题没有对您造成严重影响,建议您等待包含此修补程序的下一个Windows 2000 Service Pack发布。
注意:在特殊情况下,如果Microsoft支持专业人员确定某个特定更新程序能够解决您的问题,您可能免除通常情况下的电话支持服务费用。然而,对于无法通过特定更新程序解决的其他支持问题和事项,可能会收取正常的支持费用。