在教务web的选课的维护中,经常面临asp.net1.1报错,在客户端跳转到用户自定义页面,在服务器端可以看到如下错误信息:

“/”应用程序中的服务器错误。


服务器太忙

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 服务器太忙

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[HttpException (0x80004005): 服务器太忙]
System.Web.HttpRuntime.RejectRequestInternal(HttpWorkerRequest wr) +146

版本信息: Microsoft .NET Framework 版本:1.1.4322.2443; ASP.NET 版本:1.1.4322.2460  
 
    究其深理,发现是由于asp.net 1.1中将每个Web App的Request Queue Limit默认设为了100,在选课这种大量并发的特殊时间,自然难以抵御。需要修改Machine.config中的设置。在C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG下,先备份machine.config再修改,找到如下httpRuntime部分:
<httpRuntime 
       executionTimeout="90"
       maxRequestLength="4096"
       useFullyQualifiedRedirectUrl="false"
       minFreeThreads="8"
       minLocalRequestFreeThreads="4"
       appRequestQueueLimit="100"
       enableVersionHeader="true"
/>
    看到appRequestQueueLimit为100,可以根据cpu数量和性能改为500,700,900或更大,但不能简单的将此值设置很大,因为工作进程会为每个应用程序维护一个appRequestQueue,Queue的长度固定,盲目设大将造成资源浪费与性能降低,实际使用中可以发现部分性能较差的虚拟机虽然不频繁出现报错,但在当时CPU已经比较高的情况下,该web的整体响应速度会非常慢。
    另看到一个说明,下次选课前可以调试对比下。即平时我们所用iis6都启用了应用程序池,该方式为隔离模式,而非本地模式。在非隔离模式下,machine.config中另一部分设置会生效,找到:
<processModel
       enable="true"
       timeout="Infinite"
       idleTimeout="Infinite"
       shutdownTimeout="0:00:05" 
       requestLimit="Infinite" 
       requestQueueLimit="5000" 
       restartQueueLimit="10"
       memoryLimit="60" 
       webGarden="false"
       cpuMask="0xffffffff"
       userName="machine"
       password="AutoGenerate"
       logLevel="Errors"
       clientConnectedCheck="0:00:05"
       comAuthenticationLevel="Connect"
       comImpersonationLevel="Impersonate"
       responseDeadlockInterval="00:03:00" 
       maxWorkerThreads="20"
       maxIoThreads="20"
/>
    其中的requestQueueLimit,maxWorkerThreads,maxIoThreads适当改的大些,可能会比上面的修改有更好的效果。
 公司的一个web应用也发生了这个问题,最后在
appRequestQueueLimit改成 1000
 maxWorkerThreads="20"改成40
       maxIoThreads="20" 改成40
后成功。
 
 
 
 

转ASP.NET1.1请求队列限制的更多相关文章

  1. ASP.Net的工作线程与请求队列

    当 ASP.NET 接收针对页的请求时,它从线程池中提取一个线程并将请求分配给该线程. 一个普通的(或同步的)页在该请求期间保留线程,从而防止该线程用于处理其他请求.如果一个同步请求成为 I/O bo ...

  2. ASP模拟POST请求异步提交数据的方法

    这篇文章主要介绍了ASP模拟POST请求异步提交数据的方法,本文使用MSXML2.SERVERXMLHTTP.3.0实现POST请求,需要的朋友可以参考下 有时需要获取远程网站的某些信息,而服务器又限 ...

  3. 编写简单的ramdisk(有请求队列)

    前言 前面用无请求队列实现的ramdisk的驱动程序虽然申请了请求队列,但实际上没用上,因为ramdisk不像实际的磁盘访问速度慢需要缓存,ramdisk之间使用内存空间,所以就没用请求队列了.本文将 ...

  4. 编写简单的ramdisk(无请求队列)

    最近在研究块设备驱动的编写,看了赵磊大牛的<写一个块设备驱动>,受益匪浅,虽然能看懂里面说的,但动手写写代码还是能加深理解的,下面实现的ramdisk写的很简单,如果有错误,欢迎大牛们指正 ...

  5. ASP.NET获取请求的url信息汇总

    ASP.NET获取请求的url信息汇总 最近做项目需要处理一个用代码获取当前网站的域名或ip信息的问题,于是尝试了ASP.NET中各种获取url信息的方法,在此总结一下: 在Global.asax文件 ...

  6. 检测到有潜在危险的 Request.Form 值。 说明: ASP.NET 在请求中检测到包含潜在危险的数据

    在请求方法的顶部添加        [ValidateInput(false)]就OK了 从客户端(Content=" sdfdddd ...")中检测到有潜在危险的 Reques ...

  7. Asp.Net HttpApplication请求管道与Session(二)

    Asp.Net 回话的创建与结束 LogHelper.LogHelper _log = new LogHelper.LogHelper(); /// <summary> /// 程序开始- ...

  8. Asp.Net HttpApplication请求管道与Session(一)

    1.请求处理顺序执行事件 /********************请求处理顺序执行事件**********************/ /// <summary> /// 请求入站 /// ...

  9. 自动化CodeReview - ASP.NET Core请求参数验证

    自动化CodeReview系列目录 自动化CodeReview - ASP.NET Core依赖注入 自动化CodeReview - ASP.NET Core请求参数验证 参数验证实现 在做服务端开发 ...

随机推荐

  1. RBM阅读笔记

    RBM包含两个层,可见层(visble layer)和隐藏层(hidden layer).神经元之间的连接具有以下特点:层内无连接,层间全连接.RBM可以看做是一个二分图(神经元当做顶点,神经元之间的 ...

  2. java虚拟机判断对象是否存活的方式

    引用计数算法:   给对象添加一个引用计数器,每当有地方应用时,计数器值就加一,当引用失效时,程序计数器就减一,只要引用计数器的值为零时,就表示对象不可能再被引用,例如微软的 component ob ...

  3. ABAP 生产订单的创建与修改函数

    ABAP 生产订单的创建与修改函数转自http://www.cnblogs.com/aBaoRong/archive/2012/04/11/2441946.html   如果生产订单过多,可以批量创建 ...

  4. Codeforces Round #379 (Div. 2) A B C D 水 二分 模拟

    A. Anton and Danik time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  5. SQL server2008-对象资源管理器-数据库

    数据库:系统数据库(master.model.msdb.tempdb).数据库快照.自定义数据库组成 三部分组成. master:Master数据库是SQL Server中最重要的系统数据库,记录了S ...

  6. ready和onload的区别

    $(document).ready()和window.onload在表面上看都是页面加载时我们就去执行一个函数或动作,但是在具体的细节上$(document) ready()和window onloa ...

  7. 此博客主人已搬家访问新家地址:http://write.blog.csdn.net/postlist

    此博客主人已搬家访问新家地址:http://write.blog.csdn.net/postlist

  8. vm虚拟机安装雨林木风ghost镜像

    每次安装总是提示没办法加载镜像,或者镜像不存在,总之就是读取不到光驱里的镜像文件. 这是需要注意的两点:cd光驱模式设置为IDE,不能是scsi和sata两种模式,然后再进入winpe系统就行.

  9. CE 操作串口

    WinCE里面都是通过标准的系统API对串口进行操作的,但是串口不同于其它文件,它是是独占式地操作的. 下面是一个操作的串口类: #pragma once typedef void (*LPDataA ...

  10. xml报文的装配解析

    xstream dom 将map自动转化为xml报文 http://blog.csdn.net/lisheng19870305/article/details/45847985 报文的通信