w3wp异常

相信做ASP.NET中大型Web应用的人都碰到过OutOfMemoryException这个异常,对于这个问题我研究了很久,在微软的技术文档上也了解过此问题出现的原因,说实话,到目前我仍然没有完美的解决方案,这里只是把我处理该问题的一些经验提出来和大家一起分享,尽可能的避免该问题的发生。

  1)
首先,在硬件的配置上,出现该问题的原因我想很多人已经知道了,那就是IIS对于内存的管理存在一些限制,普遍的认识是800M的线程内存使用上限(通过我的一些客户实践证明的确如此,甚至更低...),不管是w3wp还是aspnet_wp,这个限制对ASP.NET应用服务器的机器配置而言其意义是很明显的,超过2G的内存对于单纯的Web服务器而言作用是很微小的,所以在Web服务器的配置上可在CPU的数量方面多考虑。

  2) IIS配置上的方案,IIS5.0可安装一个IIS5Recycle程序,该程序采用服务的形式来回收工作进程,安装说明:http://support.microsoft.com/?id=322350,对于IIS6.0可以在应用程序池的配置上设置自动回收工作线程的时间,我一般都会设在凌晨2点:)

  3) 在.NET
Framework的配置上,修改machine.config配置文件中的配置节<processModel>的属性“memoryLimit”,这个属性的值默认为“60”,是一个百分比数据,我们需要按照服务器实际的内存数,再根据800M的上限来设置这个值,那么在达到这个阀值时IIS会自动回收进程

  4)
在Web应用程序的开发中,必须尽可能的减少对内存使用的浪费,及时释放资源,我想说明的有3点:1、通过代码主动调用Dispose方法进行资源释放,2、对于实体类尽可能复用,不做多余的声明和创建,3、减少Session的使用,缩短Session的有效期,尤其对于大数据对象尽量不要存储在Session中

  5)
一个比较通用的办法,在Web应用程序的基类中通过try{}catch{}来主动捕捉OutOfMemoryException异常,发现该异常后直接调用GC.Collect()进行强制垃圾回收。

  最后,有很多朋友提到32位系统对于大内存使用方面可以打开3G模式,这个本身没有什么问题,只是根据个人经验,其对单纯Web应用程序的帮助不大,如果Web服务器还有更多的用途当然也建议采用此模式.

  希望对大家处理此问题有帮助

win2003可以这样自动重启:
新建一个命令行文件比如reboot.cmd
内容如下:shutdown -r -t 30

在计划任务中新建一个任务,程序选择上面这个reboot.cmd文件,时间定好,执行任务的用户及密码设置好

w3wp异常,码迷,mamicode.com

时间: 2024-10-19 22:59:58

w3wp异常的相关文章

Error-ONS-ASP.NET-ISS:0x000007FEFD04BE0D (KernelBase.dll) (w3wp.exe 中)处有未经处理的异常: 0xE0434352

ylbtech-Error-ONS-ASP.NET-ISS:0x000007FEFD04BE0D (KernelBase.dll) (w3wp.exe 中)处有未经处理的异常: 0xE0434352 (参数: 0xFFFFFFFF80131604, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x000007FEEAE60000). 出现了  1.返回顶部 1. 0x000007FEFD04BE0D (KernelBas

w3wp.exe已附加有调试器,但没有该调试器配置为调试此未经处理的异常,若要调试此异常,必须分离当前的调试器。

之前通过使用VS2010附加进程调试项目后,今天开机发现调试本机的项目报错如下图: 到网上到处查看无果,经过反复实验找到解决方法,我的项目是发布到IIS的 1.首先删除IIS上面的项目 2.在VS右击项目->属性->Web->点击创建虚拟目录(也就是重新创建一个) OK问题解决,这个问题折腾了我2小时,试过好多方法如重新注册framework.重启iis,重启电脑等方式,都不好用,所幸找到了解决方法,纪念一下,希望帮助更多的人.

w3wp占用CPU过高

w3wp占用CPU过高 在此之前项目有发生过两次类似的状况,都得以解决,但最近又会发现偶尔CPU会跑满,虽然之前使用过WinDbg解决过两次问题但人的记忆是不可靠的,今天处理同样问题的时候还是遇到了一些障碍,这一次希望可以记录的更全面些. 上两次的博文链接:记一次w3wp占用CPU过高的解决过程(Dictionary和线程安全).EntityFramework中的线程安全,又是Dictionary. 首先请大家不要喷我,因为这一次还是关于Dictionary的一些低级错误,我自己看到都无语了..

遇到OutOfMemoryException异常了

2008-11-28 09:52 asp.net做的售后服务系统运行了快1年了,昨天在做全年数据导出的时候出现OutOfMemoryException异常,数据量大约50M.50M应该不是很大,放在数据库里也就几万条(表字段很多).IIS6的应用程序池的设置是默认的.不知道为什么这样,本机测试的时候是没有这个问题的.估计问题的原因在于:1.程序中内存控制问题:2.服务器内存回收的问题.据说IIS6最多能用800M的内存,如果IIS设置的内存超过800M就可能出现OutOfMemoryExcept

记一次w3wp占用CPU过高的解决过程(Dictionary和线程安全)

项目上线以来一直存在一个比较揪心的问题,和一个没有信心处理的BUG,那就是在应用程序启动时有可能会导致cpu跑满99%或持续在一个值如50%左右,这样一来对服务器的压力是非常大的,经常出现服务器无法远程的状态,唯有通过PowerShell杀掉对应的w3wp进程才可以解决这个问题. 为什么没有信心处理这个问题 原因非常简单,这个问题是间歇性的,不容易重现的,只会在项目启动时有一定的可能性会发生CPU跑满的问题. 所有可以重现的BUG的处理都不会太难,而类似这种无法重现的BUG是最让人头疼的,因为它

w2wp.exe 已附加有调试器,但没有将该调试器配置为调试此未经处理的异常

一.问题描述 昨天系统联调,用到了VS2010 附件进程,把w2wp.exe 进程添加到vs2010 的调试进程中,这样其他系统访问我们系统,就可以捕获断点进行调试 但是,今天F5 调试的时候,发现直接报错"w2wp.exe 已附加有调试器,但没有将该调试器配置为调试此未经处理的异常.若要调试此异常,必须分离当前的调试器" 二.问题分析: w2wp.exe:是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行

非代码的异常

错误应用程序名称: w3wp.exe,版本: 7.5.7601.17514,时间戳: 0x4ce7a5f8错误模块名称: ntdll.dll,版本: 6.1.7601.18798,时间戳: 0x5507b3e0异常代码: 0xc0000005错误偏移量: 0x000222d2错误进程 ID: 0x3fe0错误应用程序启动时间: 0x01d0b8857a1ba72b错误应用程序路径: C:\Windows\SysWOW64\inetsrv\w3wp.exe错误模块路径: C:\Windows\Sy

使用 IDEA 创建 Maven Web 项目 (异常)- Disconnected from the target VM, address: &#39;127.0.0.1:59770&#39;, transport: &#39;socket&#39;

运行环境: JDK 版本:1.8 Maven 版本:apache-maven-3.3.3 IDEA 版本:14 maven-jetty-plugin 配置: <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <configuration> <webAppSourceDirectory>${pro

mybaits非配置原因,导致SqlSession was not registered for synchronization异常

今天运行程序时报了 SqlSession [[email protected]] was not registered for synchronization because synchronization is not active [11:03:17]-Closing non transactional SqlSession [[email protected]] 由于异常是集中处理的,所以报了这样的错误,查了半天,网上结果都是说配置文件出错的,可是我的项目配置文件肯定是没错的,因为项目都开