IIS中死循环的解决方法 dllhost占用大量内存,cpu占用100%

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
一、dllhost占用大量内存的可能原因:

 

1 、感染了的病毒
用杀毒软件好好查一查

2、web程序问题

A、在你的程序中,没有及时关闭数据库和记录集的连接很容易造成内存泄漏和sql进程死锁。所以写程序时,一定要尽快释放系统内存资源
rs.close
set rs=nothing
conn.close
set conn=nothing

  除了要尽快释放asp中对象占用的资源,还要及时释放存储有较多数据的变量和数组,尤其是数组,语法同上:

set 变量名=nothing

对于释放数组,

未定义大小的可变数组可直接使用 set 数组名=nothing

已定义大小的固定数组,则使用 set 数组名(n)=nothing ,如,set strArticle(20)=nothing

B、程序中出现了死循环。比如,你的asp调用sql语句出错了。就像有位朋友说的是数据库错了。在用asp执行sql语句时,进入死循环,使得dllhost占用100%的cpu。我在调试程序时,很头疼的。我碰到的几次都是调用update的时候,怎么看都没看出bug来。。后来就干脆自己重写写update的语句。大家在调试asp的网站时,建议大家对update的语句留个心眼。

注:如果由于程序原因导致IIS崩溃,可使用win系统目录下的IIS重启工具

位置在:C:/WINNT/system32/iisreset.exe 重新启动IIS,也可以直接在IIS管理面板进行重启。

3、IIS配置问题

在IIS5.0版本中,你可以通过三个选项来控制ASP应用程序的独立性(isolation.exe)
站点属性==>主目录==>应用程序保护

Application Protection选项影响可执行文件和组件运行的方式。
Application Protection选项如表3-2所示:

低(IIS进程)
带有这种设置的ASP虚拟应用程序的所有可执行文件和组件运行在Web服务器的可执行文件(Inetinfo.exe)的进程(即内存空间)中。因此,如果可执行文件或组件之一失败的话,Web服务器处于危险状态。这提供了最快和以最少的资源执行的选项

中(共用的)
(缺省)带有这种设置的ASP虚拟应用程序的所有应用程序的可执行文件和组件是运行在DLLHost.exe的单个共享实例的进程(即内存空间)中。这就防止了Web服务器可执行文件(Inetinfo.exe)受可执行文件或组件失败的影响。然而,一个失败的可执行文件或组件可能引起DLLHost.exe进程失败,以及所有其他驻留其中的可执行文件和组件失败

高(独立的)
带有这种设置的ASP虚拟应用程序的所有应用程序的可执行部分和组件是运行在DLLHost.exe的单个共享实例的进程(即内存空间)中,但是每个ASP应用程序都有自己的DLLHost.exe实例,该实例对该应用程序是独占的。这就防止了Web服务器可执行文件(Inetinfo.exe)受可执行文件或组件失败的影响,并防止虚拟应用的单个共享实例受另一个虚拟应用程序的一个可执行文件或组件失败的影响。
Microsoft建议最多有十个这样的虚拟应用程序驻留在一个Web服务器上

看看是不是独立配置为高的站点
com+独立运行可能需要采用IWAM_XXX用户运行,可能该用户运行DLL文件出现权限问题或也有可能该站点使用的DLL内部出错,弹出对话框等待关闭,就会出现死寂情况。

办法:
1、检查DLL问题
2、删掉此站点重新配置一次。

二、在进程管理中有两个运行的dllhost.exe,这是什么原因?

Dllhost是Windows 2000上所有COM+应用的宿主进程。例如,IIS使用Dllhost来运行ASP和其他的脚本引擎,如Perl等。如果它们占用大量资源,很可能是您的COM+应用程序发生了问题。下面以IIS为例,介绍一些初步的调试步骤:首先用停止IIS服务,如果这两个进程消失,则确认是IIS的问题。然后逐个停止IIS中的各个站点,找到具体导致问题的站点。再根据站点的具体情况来对相应的web应用程序进行调试。

2个DLLHOST,一个是公共的,一个是独立的

三、相关文章

1、[峰言峰语]wmi实现iis的智能重启
wolfeng 发表于 2005-5-30 9:49:31
公司的web服务器老是由于dllhost.exe 的内存占用过大而当掉,导致asp页面不能正常访问,最可气的是这种情况每每发生在我休假的时候,不得已被拉回来重启一下iis,为了使自己的五一长假能安稳些,写了个iis的自动重启程序,我见网上类似的程序,都是定时重启,我理想的状况是不要过于频繁启动,只在dllhost.exe这个进程当掉的时候,再重启,于是有了下面这段代码,原理是监视应用程序日志,当出现事件id是5的错误时(无法为asp程序提供足够内存),重启iis,呵呵。

strFullName = WScript.FullName
strWshHost = Right(strFullName, 11)
WScript.Echo "Default script host: " & strWshHost
If strWshHost = "WScript.exe" Then
Set objShell = CreateObject("WScript.Shell")
objShell.Run _
"%comspec% /k ""cscript //h:cscript&&cscript fu.vbs""", _
MAXIMIZE_WINDOW
If Err.Number <> 0 Then
WScript.Echo "Error 0x" & hex(Err.Number) & " occurred. " & _
Err.Description & ". " & VbCrLf & _
"Could not temporarily change the default script host to Cscript."
Err.Clear
WScript.Quit
End If
WScript.Quit
End If
’----上面这段代码是强制到cscript命令行,一般要在cmd命令行下输入cscript *.vbs,如果直接执行vbs会用wscript打开,这样只会弹个对话框,我不喜欢,有不想每次都cscript,所以要写点额外的代码,双击后会调用一个wscript执行csript,然后再消灭自己,幸好微软的网站上提供了这个代码------------------------------------
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel= impersonate, (Security)}!//" & strComputer & "/root/cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("Select * from __instancecreationevent where TargetInstance isa’Win32_NTLogEvent’ and TargetInstance.EventCode = ’4’ ")
Wscript.Echo "开始监视iis于 "&now
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo "重新启动iis "&now
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%COMSPEC% /c IISRESET.EXE",,1
’------核心程序,呵呵,短吧,wmi万岁

whichfile=("iisresetlog.htm")
set fso=createobject("Scripting.FileSystemObject")
if Not fso.FileExists(whichfile) then
iomode=2 : create=true
’Set MyFile = fso.CreateTextFile(whichfile,True)
else
iomode=8 : create=false
’Set MyFile = fso.CreateTextFile(whichfile)
end if
set MyFile = fso.OpenTextFile(whichfile,iomode,create)
’MyFile.writeLine("事件发生于 "&now&" 重启iis成功"&vbctrf)
if create=true then
MyFile.WriteLine "<html>"
MyFile.WriteLine "<head>"
MyFile.WriteLine "<title>Process Report</title>"
MyFile.WriteLine "</head>"
MyFile.WriteLine "<body bgcolor=#CCCCCC>"
MyFile.WriteLine "<h3>iisreset Report</h3>" & vbCrLf
end if
MyFile.WriteLine "<table BORDER=1 bordercolor=#666666 cellpadding=0 cellspacing=0 width=60%>"
MyFile.WriteLine "<tr>"
MyFile.WriteLine _
"<td>iis重启时间:</td><td>" &now& "</td>"
MyFile.WriteLine "<td>是否成功:</td><td>是</td>"
MyFile.WriteLine "</tr>"
MyFile.WriteLine "</table>"
MyFile.Close
set fso=nothing
Loop
’-----用fso记录iis 重启日志。

注释:■%comspec%
打开一个命令行窗口。%comspec% 是一个指向当前命令行外壳的环境变量。通过使用 %comspec%,您不必担心命令行外壳是 cmd.exe 还是 command.exe;%comspec% 会自动选择正确的一个。

■/k
在调用 Dir 命令后,确保窗口始终保持打开。这就是 /k 参数的用处。如果我们想要确保命令窗口会在 Dir 命令调用完成后被自动关闭,应该将 /k (keep) 修改为 /c (close)。


2、如何在 IIS 5.0 中排查 ASP 故障

文章编号 : 309051
最后修改 : 2005年8月12日

概要
本文逐步介绍当 ASP (Active Server Pages) 在 Internet 信息服务 (IIS) 5.0 Web 服务器上停止响应时所采取的故障排除步骤。平台可以是任意版本的 Windows 2000。

如何在 IIS 5.0 中排查 ASP 故障
注意:在开始之前,请确保在所讨论的 Web 服务器上打开了 .html 或 .htm 文件。如果这些文件未打开,则不属于 ASP 问题。

1. 如果 Global.asa 文件位于网站的根目录中,请将其重命名为 Global.old,停止并重新启动 Web 服务,然后在记事本中使用以下代码创建一个 ASP 测试页:

<%
Response.Write "This is a test ASP page."
%>

在您的网站的根目录中将该文件另存为 Test.asp,并尝试在 Web 服务器上打开该文件。

如果在执行该步骤后,Web 浏览器中加载了 ASP 页,则 Global.asa 文件存在问题。如果 ASP 页仍未加载,请接着执行步骤 2。

有关 Global.asa 文件故障排除方面的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

288245 (http://support.microsoft.com/kb/288245/) PRB:无法从 Windows 98 上的 Personal Web Server 中激发 Global.asa
265275 (http://support.microsoft.com/kb/265275/) FP2000:Global.asa 无法在 FrontPage 网站中运行
173742 (http://support.microsoft.com/kb/173742/) FIX:如果限制 Web 访问,将无法执行 Global.asa
2. 将网站的应用程序保护设置为低,然后停止并重新启动 IISAdmin 服务。

如果在执行此步骤后 Web 浏览器中加载了 ASP 页,则 IWAM 帐户存在问题,您可以接着执行步骤 3。如果 ASP 页仍未加载,请检查管理工具中的组件服务以确保可以查看 IIS 程序包。这可确保组件服务没有故障。确保在本地用户组中存在以下用户:

• NT AUTHORITY/Authenticated Users
• NT AUTHORITY/INTERACTIVE

有关组件服务管理单元故障排除方面的更多信息,请参阅以下知识库文章:

301919 (http://support.microsoft.com/kb/301919/) PRB:无法在“组件服务”MMC 管理单元中展开“我的电脑”
3. 如果在执行步骤 2 后 Web 浏览器中加载了 ASP 页,请将网站的应用程序保护级别重新设为中或高,并将 IWAM 帐户添加到本地管理员组中。

如果在执行此步骤后 Web 浏览器中加载了 ASP 页,则存在与 IWAM 帐户有关的权限问题,您可以接着执行步骤 4。如果 ASP 页仍未加载,请从命令行运行 Synciwam.vbs 实用工具。为此,请打开命令提示窗口并键入 C:/Inetpub/adminscripts>cscript synciwam.vbs。

有关 IWAM 用户帐户导致 ASP 出现故障的情况的其他信息,请参阅下列知识库文章:

308622 (http://support.microsoft.com/kb/308622/) 如何在 Windows 2000 中从命令提示符执行 IIS 中的管理任务
297989 (http://support.microsoft.com/kb/297989/) PRB:为 IWAM 帐户配置的标识不正确
255770 (http://support.microsoft.com/kb/255770/) PRB:运行进程外 Web 时出现“Logon Failure:Unknown User Name or Bad Password”(登录失败:未知的用户名或错误密码)错误信息
236007 (http://support.microsoft.com/kb/236007/) 降级域控制器导致进程外应用程序失败
4. 要解决 IWAM 帐户的权限问题,请使用适用于 Windows 2000 的 Regmon 和 Filemon 第三方产品。

要下载这些实用工具,请参见下面的网站:
http://www.sysinternals.com ;(http://www.sysinternals.com)
请在请求 ASP 页的同时运行这些实用工具,然后针对 Dllhost.exe 进程,在 Regmon 中搜索“ACCDENIED”,在 Filemon 中搜索“FAILURE”。

注意:如果对于 Iexplore.exe (Microsoft Internet Explorer) 进程,出现“access denied”(拒绝访问)错误信息,请不要惊慌。这是正常现象。

有关 IIS 正常运行所需的最小权限的更多信息,请参阅下列知识库文章:

271071 (http://support.microsoft.com/kb/271071/) 如何为 IIS 5.0 Web 服务器设置必需的 NTFS 权限和用户权限
在识别针对 Dllhost.exe 进程的“access denied”(拒绝访问)错误信息后,请使用 Regedt32 在注册表中对 NTFS 权限进行必要的修改。

5. 在系统事件日志中,查找以下事件:

Source:DCOM
Event ID: 10010
User:NT AUTHORITY/SYSTEM
Description:The server {3D14228D-FBE1-11D0-995D-00C04FD919C1} did not register with DCOM within the required timeout.
在事件日志中,该错误信息之后还有与下面内容类似的警告消息:
Source:W3SVC
Event ID: 36
User:N/A
Description:The server failed to load application ’AppPath’.The error was ’Server execution failed’.
%SystemRoot%/Iis5.log 文件中也可能出现与下面内容类似的条目:
OC_ABOUT_TO_COMMIT_QUEUE:Unreg iis_core:FindModules:FindProcessByNameW failed!
如果收到上述错误信息,则 NT AUTHORITY/Authenticated Users 或 NT AUTHORITY/INTERACTIVE 项已经被从用户组中删除。要解决该问题,请确保 Authenticated Users 和 INTERACTIVE 是该计算机的用户组的成员。

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

327153 (http://support.microsoft.com/kb/327153/) PRB:无法处理 ASP 页并且在系统日志中出现 DCOM 事件 10010
6. 实在迫不得已,您可以重新创建 IIS 程序包。

为此,请按照下列步骤操作:

a. 浏览至“组件服务”并删除下列程序包:注意:要删除这些程序包,必须首先打开程序包的属性,单击高级选项卡,然后单击以清除禁止删除复选框。

• IIS In-Process Applications
• IIS Out-of-Process Pooled Applications
• IIS Utilities

b. 打开命令提示窗口,然后使用以下命令切换目录:
cd %windir%/system32/inetsrv

c. 运行以下命令:
rundll32 wamreg.dll, CreateIISPackage
注意:必须准确键入“CreateIISPackage”;它区分大小写。
regsvr32 asptxn.dll
d. 关闭并重新打开“组件服务”。您应看到已经重新创建的所有这三个 IIS COM+ 应用程序。
e. 从命令行运行 IISRESET,并对先前未正确加载的任意 ASP 页进行测试。 

iis worker process内存占用大_spark内存模型调优 前言 注意:本文具有一定的深度,需要您之前对spark的运行流程熟悉,否则,您可能看不懂不过,也没关系,我会把spark的运行流程重新写一遍,然后再引入进来内存调优。spark任务运行流程 为了让我的讲述更具有实际性,不是在一个天空中飞翔的感觉,或者说特别空灵的感觉,让我以一段代码作为开始,然后结合代码的方式去解释spark任务的运行流程。package 相信大家对这段spark代码一点都不会陌生... 阅读详情

相关推荐

IIS占用CPU%问题排查方案

有时候辛辛苦苦写个网站,挂到服务器上一看,CPU给百分百了,这种问题百分之八九十都是因为代码写有问题,而不是因为系统设置的问题,这种问题也比较难排查。但是结合一些工具也可以找到原因的,关于windbg的使用,好像有本关于.net调试的书,大家有兴趣可以看看,网上也有一些帖子,但关于ANTS Profiler的帖子就比较少了,大家也可以下载试用版来帮助解决问题1 准备日志1.1       

meilove812的专栏 3074

dllhost.exe进程占用CPU很高怎么解决?

本文主要介绍了dllhost.exe进程占用CPU很高怎么解决?全面解析dllhost.exe进程的相关资料,需要的朋友可以参考下本文详细内容介绍不少用户刚刚安装win7旗舰版系统后发现运行速度特别慢,打开任务管理器发现有个dllhost.exe进程经常出现,dllhost.exe进程占用大量CPU,因为不知道是什么进程,也不敢删除,那么该怎么办?dllhost.exe进程是什么?下面,跟随小编一起来看看Win7系统任务管理器dllhost.exe进程占用大量CPU解决方法

xinyuerr的博客 2850

IIS解决CPU内存占用率过高的问题

发现进程中的w3wp占用率过高。 经过查询,发现如下: w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行。这个进程用来分配大量的系统资源。这个进程对于系统的稳定和安全具有重要的意义,不能轻易的结束掉这个进程。 找到解决办法:(Windows2008中可以通过:服务器管理器-&gt;角色\web服务器\...

kakashs 4436

iis占用服务内存,W3wp.exe 进程占用内存高消耗CPU100%导致网站反应速度缓慢的解决方案

iis占用服务内存,W3wp.exe 进程占用内存高消耗CPU100%导致网站反应速度缓慢的解决方案

goolean的专栏 3396

用VB编写COM+应用时碰到问题? (转)

用VB编写COM+应用时碰到问题? (转)[@more@]各位大虾: 小弟在使用VB编写COM+应用时碰到这样一个问题,如下: COM+应用注册后,在IIS应用中创建应用对象时不能创建成功,然后跟踪COM+中的应用,发现,该...

ciya3282的博客 177

为什么出现 Service Unavailable

           问:为什么我的网站有时会出现“Service Unavailable”的提示,刷新几下又可以访问。          答: 出现这种情况是由于您的网站超过了系统资源限制造成的,主要是流量太大或者程序占用资源太多。          1.流量太大           比如您购买的是b002型基础型主机,该主机的额定流量是15G/月。如果您的网站每月流量在15G,每天流量在0.5

921

解决iis内存占用过大的问题

IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。 今天研究了一下,可以做以下配置: 1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。 2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存 (注:虚拟内存的基础是指整个系统用的虚拟内存,二不...

weixin_34415923的博客 1227

解决iis内存占用过大的问题--ZT

解决iis内存占用过大的问题--ZT

hijk7的博客 1026

解决IIS占用CPU内存大的问题

在WINDOWS2003+IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。 可以做以下配置: 1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。 2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存 ...

weixin_34183910的博客 2825

w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法

对于IIS 管理员来说,经常会碰到 Web 服务CPU 占用 100% 的情况,以下是个人的日常工作总结和一些解决办法,主要用来剖析 w3wp.exe(IIS占用 CPU 100% 的一些原因 和解决方案,希望能对你有所帮助 w3wp.exe的解释 : 全名,IIS Application Pool Process。 w3wp.exe是IIS工具的一部。w3wp.e

东亮博客 7万+

IIS CPU占用量比较高

在公司项目实施过程中,发现外包供应商做的asp的项目的cpu占用量比较高;通过IIS的工作进程;可以看到目前正在执行的进程,哪个接口的响应时间较长。

Leo.xie的博客 1718

设置iis网页服务cpu占比,服务器上IIS占用CPU资源100%的解决办法

分享者:brookwang 阅读量:567㊋ ㊌абвгде㊎㊏⊙▽㊋ ㊌абвгде㊎㊏⊙▽服务器上IIS占用CPU资源100%的解决办法分类:服务器我用的是asp+access,我遇见这中情况的解决办法:1、首先按网上说的分开应用池,设置控制。(没有起作用问题依旧,但学了很多东西,这也不能说不是一个好办法,我还是赞同这种说法的)2、我把一个个数据库都转移了,或改名,发现cpu开始有所变化,...

weixin_35850219的博客 2281

服务内存不足原因分析

(1)iis的应用程序池无法及时释放内存 应用程序池的默认回收时间是1740分钟,这容易导致应用程序池无法及时释放内存的情况。发现内存不足建议修改一下自动回收回收时间,当然,设置多长时间回收一次要根据自身网站情况来设置。 (2)服务器本身内存资源不足 站长们购买服务器时的配置大多是按当时的情况来选择的,但随着服务器使用时间的不断增长,网站规模、流量不断变大,这也会导致原来的内...

weixin_30549657的博客 1125

dllhost.exe占用内存过高的问题

首先排除是冲击波病毒,方法很简单,在任务管理器,右键打开文件位置,如果不是在System32文件夹下,就可能有问题了。 如果是冲击波的话,估计删了就好了。 不是的话,两种: 1、删除3D视频,对于3D视频,windows在生成缩略图时有问题。或者打成包也可以。 2、参见这个回答:http://zhidao.baidu.com/link?url=7ApjHY4gPGZ7xldtLvXZgXz

thoris的专栏 4981

CPU爆满问题排查

通过WinDbg排查CPU爆满原因

明豆的博客 5866
上一篇: 上传图片时预览
下一篇: 一种层随屏幕分辨率改变而固定的方法
dshpsky
博客等级 码龄20年 23粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值