w3wp.exe - 应用程序错误 应用程序发生异常

w3wp.exe - 应用程序错误 应用程序发生异常
应用程序发生异常   未知的软件异常   (0xc06d007e),位置为   0x7c815e02   
   
  环境是:2003   +   sp1   +   ie6   +   Framework   2.0   +   vs   2005   
   
  在vs   里面调试没有问题,发布网站以后在iis上运行报错,找不到原因,网上搜索说可能是程序池里的不同版本的framework冲突,后来把全部的net全改成2.0版,一样报错。
解决办法:

点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项,     
  选择其下的“IIS   ADMIN   SERVICE”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“IWAM_*****”,     
  给该帐号赋予“本地启动”和“本地激活”的权限,重新启动IIS,(点“开始”-“运行”-“CMD”,点确定,然后运行IISRESET),

上面这个方法解决有点问题,没找到问题根源:请看下面:
按上述方法仍然无法解决问题,后来google搜索如下办法,不知道可行否,待查:

我已经找到问题的 答案了,是删除注册表里的两个键值就行了。
在msdn中是这样解释的:
关键词“实时调试”

实时调试是这样一种功能,当在 Visual Studio 外运行的程序遇到致命错误时,它自动启动 Visual Studio 调试器。实时调试使您能够在应用程序被操作系统终止之前检查错误。Visual Studio 调试器不需要在发生错误时是运行的。

如果在启用了实时调试的情况下发生了错误,将打开一个对话框,询问您是否要调试程序,以及要使用哪个调试器。

如果作为另一个用户运行的程序命中致命错误,则在调试器启动之前,将显示一个安全警告对话框。有关更多信息,请参见安全警告:附加到不受信任的进程可能会有危险。

您可以从“选项”对话框启用实时调试。有关更多信息,请参见如何:启用/禁用实时调试。

对于 Windows 窗体,您还必须在 machine.config 或 application.exe.config 文件中启用实时调试。有关更多信息,请参见如何:为 Windows 窗体启用实时调试。

在服务器上安装 Visual Studio 后,当发生一个未处理的异常时,默认行为会显示一个需要用户干预的“异常”对话框,用户要么启动实时调试,要么忽略该异常。这对无人参与执行可能是不需要的。若要配置服务器以在未处理的异常发生时不再显示对话框(安装 Visual Studio 之前的默认行为),请使用注册表编辑器删除以下注册表项:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug/Debugger

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework/DbgManagedDebugger

在 64 位 操作系统上也删除以下注册表项:

HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Windows NT/CurrentVersion/AeDebug/Debugger

HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/.NETFramework/DbgManagedDebugger

注意
实时调试将对在本机应用程序中承载的托管代码不起作用,例如可视化工具。

注意
在 Windows Server 2003 或 Windows 2000 SP3(或更新版本)上安装 .NET Framework 后,只有在计算机重新启动后,实时调试才可用于在终端服务会话中通过受限用户帐户运行的进程。
 
解决w3wp.exe内存占用问题 w3wp.exe CPU占用100%在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。

解决内存占用过多,可以做以下配置:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。

解决CPU占用过多:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。

根据w3wp取得是那个一个应用程序池:
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。(iisapp实际上是存放在C:/windows/system32目录下的一个VBS脚本,全名为iisapp.vbs,如果你和我一样,也禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值