解决dllhost占用CPU 100%的免费方法

如果在Windows系统中造成CPU100%的话系统会产生延迟,反映到用所访问的站点上面就是等待的时间加长。其实是一个非常复杂的问题,但是如果是因为dllhost占用了CPU100%的话,绝大多数情况下跟IIS有关。产生这种现象的原因主要是:IIS调用ASP组件(即包括自身的也包括第三方的)的时候出现错误,比如IIS无法找到程序中所调用的组件、Access数据库损坏造成ASP操作线程死锁等等;另外一个就是可能中了冲击波病毒,这样只要找一个专杀工具就可以了,本文不在予以描述。

因为所有的IIS组件操作在任务管理器中都是显示的dllhost.exe所占用的状况,如果想查看具体IIS中哪个部分进行操作可以通过“组件服务”来查看。在控制面板中依次打开“管理工具”-“组件服务”,然后依次选择打开“组件服务”-“计算机”-“我的电脑”-“COM+ 应用程序”,然后在上面右键选择菜单中的“查看”-“状态”,这样可以显示正在运行的组件部分。

但是上面的操作只能粗略的查看,很多时候并不能找到出现问题的哪个部分。如果通过百度或者Google搜索的话绝大部分的文章都是提到使用某公司的产品进行监视(明显应该是软文,看来这家公司推广做的不错,呵呵),其实完全没有这个必要,下面同大家分享一下我解决问题的过程。

如果站点中含有Access数据库文件的话首先不管三七二十一先把这些文件用Access压缩修复一下,如果还出现这个问题的话就证明不是Access数据库的问题了。

其实只要能检测IIS执行的时间以及网址(包含参数)并记录下来,然后查看执行时间比较长的链接就是造成CPU100%的罪魁祸首。问题的关键主要是找到出现问题的链接,开始我想自己写一个ISAPI筛选器进行监视,后来无意中发现IIS自带的日志模块本身就有这个功能。右键站点然后选择“属性”打开“网址属性”对话框,在“网站”标签里面最下面选中“启用日志记录”,这里“活动日志格式”一定选择“W3C 扩展日志文件格式”,其他格式没有执行时间选项。这个时候点击右边的“属性”按钮,在“扩展属性”标签“扩展日志记录选项”中选中“URI资源”(执行操作的网址)、“URI查询”、“协议状态”、“所用时间”(后面就基于此选项的内容进行分析)这几个选项。这样记录下来的日志里面就符合我们的要求了,等到发现dellhost又出现CPU100%之后过一段时间(这是因为IIS为了提高操作效率其日志记录中含有一个操作池,只有达到设定的条件之后才会将池中的内容写入到文件中)之后就可以根据执行时间来救出造成dllhost100%的程序文件了。

有的时候系统中不止一个地方出现问题,所以上面的方法可以重复使用。如果这样操作之后还是有问题的话那应该就是IIS自身的问题了,这个时候需要重新安装初始化IIS,具体的方法可以查看火锅城市空间的文章。另外这篇名为《关于站点程序或者ACCESS出错导致DLLHOST.exe占用CPU达100%的监测办法》的文章也值得一读。

参考资料:
dllhost.exe 100% cpu
dllhost.exe CUP使用率100% 解决方法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注