在教务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. Localization要从第一天开始计划

    最近E3,微软说可以在任何region玩任何语言的游戏了.换一个语言么,听起来没有那么复杂,其实操作起来还得是从软件工程初期就好好计划. Windows在很长一段时间,你安装完了,就不能换语言了.大学 ...

  2. myeclipse打war包时,报错security alert integrity check error

    今天在用myeclipse打包项目时,出现如下图的提示: 在网上查找了一下原因,主要是由于Jar包不符合所导致的.解决办法如下: 将com.genuitec.eclipse.export.wizard ...

  3. Spark2.0自定义累加器

    Spark2.0 自定义累加器 在2.0中使用自定义累加器需要继承AccumulatorV2这个抽象类,同时必须对以下6个方法进行实现: 1.reset 方法: 将累加器进行重置; abstract  ...

  4. UART

    一.协议部分: 协议部分转自:http://www.s8052.com/index.htm 串行通信的传送方向通常有三种: 1.为单工,只允许数据向一个方向传送: 2.半双工,允许数据向两个方向中的任 ...

  5. 高效能人士必知铁律--note

    偶然看到了<高效能人士 必知铁律>这本书,我比较少看成功学,但是这本书把很多著名的成功学书籍整理出来,有时会让你耳目一新,有些观点尽管是常识,但是却加深了你对它们的理解,比如: 只要在积极 ...

  6. outscan 一键批量 get struct2 devMode (CNVD-2016-04656)

    之前写的一个玩意 下载地址:http://pan.baidu.com/s/1i5jmEwP 密码:v8v3 一键批量 get struct2 devMode 支持百度.google(google有访问 ...

  7. Android studio 快捷键(Mac)

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  8. python3验证码机器学习

    python3验证码机器学习 文档结构为 -- iconset -- ... -- jpg -- captcha.gif -- py -- crack.py 需要的库 pip3 install pil ...

  9. Java--super关键字用法

    看了马老师的视频,百度了一下,随即敲了一些代码,super是超人,超级的意思,层面上理解为父类 class Person { Person(){             System.out.prin ...

  10. 查看Visual Studio异常内容

    If Entity Framework throws a validation exception when saving, Visual Studio reports the message, Va ...