特征:服务器正常CPU消耗应该在 %以下 而且CPU消耗应该是上下起伏的 出现这种问题的服务器 CPU会突然一直处 %的水平 而且不会下降 查看任务管理器 可以发现是DLLHOST EXE消耗了所有的CPU空闲时间 管理员在这种情况下 只好重新启动IIS服务 奇怪的是 重新启动IIS服务后一切正常 但可能过了一段时间后 问题又再次出现了
直接原因:
有一个或多个ACCESS数据库在多次读写过程中损坏 微软的MDAC系统在写入这个损坏的ACCESS文件时 ASP线程处于BLOCK状态 结果其他线程只能等待 IIS被死锁了 全部的CPU时间都消耗在DLLHOST中
解决办法:
最简单的办法是使用文件医生 自动查找并修复所有有问题的文件 请参考:
另一个办法是:
安装 一流信息监控拦截系统 使用其中的 首席文件检查官IIS健康检查官 软件
启用 查找死锁模块 设置:
; wblock=yes
;监控的目录 请指定您的主机的文件所在目录:
; wblockdir=d:test
监控生成的日志的文件保存位置在安装目录的log目录中 文件名为:
停止IIS 再启动 首席文件检查官IIS健康检查官 再启动IIS 首席文件检查官IIS健康检查官 会在中记录下最后写入的ACCESS文件的
过了一段时间后 当问题出来时 例如CPU会再次一直处 %的水平 可以停止IIS 检查所记录的最后的十个文件 注意 最有问题的往往是计数器类的ACCESS文件 例如: **COUNT MDB **COUNT ASP 可以先把最后十个文件或有所怀疑的文件删除到回收站中 再启动IIS 看看问题是否再次出现 我们相信 经过仔细的查找后 您肯定可以找到这个让您操心了一段时间的文件的
找到这个文件后 可以删除它 或下载下来 用ACCESS 修复它 问题就解决了!!!