哦,还有这种事情啊,长见识了。那大型应用是不是就不能采用.Net了?按LZ的描述,完全无法负荷啊,为什么会这样?

解决方案 »

  1.   

    不要把多个应用放于同一个应用程序池中,你可以将每个应用放于不同的应用程序池并设定各内存池不同的内存上限。
    你说的情况一般是在IIS中设置的内存上限达到时,IIS会自动重启该应用乃至整个站点。
      

  2.   

    想问一下,你这个网站的平均并发访问量是多少?我想IIS的承受能力不会这么差吧。如果我是你,我会检查一下出现这个内存泄漏问题的根源。看看工程里是否存在死循环或者没有关闭的DataReader对象,做一下压力测试吧。即使你添加了这个公共错误处理的机制,你的用户依然是无法访问,不是吗?如果要添加应用程序的全局异常处理机制,可以在Global.asax文件的Application_Error事件中进行控制,通过Exception err = Server.GetLastError().GetBaseException();获取任何系统抛出的未知异常,当然,你可以在这里使用脚本或Response.Redirect进行友好的异常处理展示或系统日志写入操作,记住在这里最后要执行Server.ClearError()。
    注意,如果你的工程中使用了Ajax.net,那么所有包含在UpdatePanel中的异常将被UpdatePanel控件在页面级处理,你将无法在Application级别上获取这些异常。
      

  3.   

    系统事件日志是:    
          aspnet_wp.exe  (PID: 4012)被回收,因为内存消耗超过了 306 MB (可用 RAM 的百分之 60)。
       而且,我查到是在访问数据库取数据时,进程aspnet_wp.exe内存增加,当数据还没取完的时候,进程已经达到60%了,进程aspnet_wp.exe重启,页面就弹出下面信息:
    服务器应用程序不可用 
    您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。 管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到。请检查此日志项以查明导致该错误发生的原因。