在教务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. linux grep,sed,awk和diff的使用

    1:grep//显示行 # grep 'main' /home/myhome/a.c//将a.c含有main的行显示出来 # grep -v 'main' /home/myhome/a.c //显示除 ...

  2. dede 优化打开速度

    织梦DedeCMS本地后台运行速度慢 不知道从什么时候开始,织梦DedeCMS在本地PHP环境进行测试的时候,后台的运行反应会非常的慢,经常过了很久都没有反应.运行很久之后,还会出现了“\includ ...

  3. CSS---解决内容过多就会出文本溢出(显示在区域外面,不换行的情况)

    当我们设置我的的div,或者其它文本框固定宽度之后,文本内容过多就会出文本溢出(显示在区域外面,不换行的情况). 这时我们可以使用Css中的几个属于来解.有以下的三个属于可以解决问题: 1,word- ...

  4. oracle执行cmd的实现方法

    网络上找到的在sqlplus中执行cmd的一些命令,主要有四种方法,这边都做了一下测试,这里做一下记录: 测试环境:window2003+Oracle 11.2.0.1.0 第一种方法: 最简单的执行 ...

  5. Todo List

    Contest 11.13 2016ACM/ICPC亚洲区青岛站(5/13, solved 7/13) Training 11.06 2016年中国大学生程序设计竞赛(合肥)(solved 6/10) ...

  6. 处理 Oracle SQL in 超过1000 的解决方案

    处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项就会报错.这主要是oracle考虑性能问题做的限制.如果要解 ...

  7. 如何分析解决Android ANR

    来自: http://blog.csdn.net/tjy1985/article/details/6777346 http://blog.csdn.net/tjy1985/article/detail ...

  8. Android 中 非对称(RSA)加密和对称(AES)加密

    在非对称加密中使用的主要算法有:RSA.Elgamal.背包算法.Rabin.D-H.ECC(椭圆曲线加密算法)等. 优点: 非对称加密与对称加密相比,其安全性更好:对称加密的通信双方使用相同的秘钥, ...

  9. LEETCODE —— Populating Next Right Pointers in Each Node

    Populating Next Right Pointers in Each Node Given a binary tree struct TreeLinkNode { TreeLinkNode * ...

  10. PetaPoco ORM 增加返回DataTable的方法

    public DataTable ExecuteDataTable(Sql sql) { return ExecuteDataTable(sql.SQL, sql.Arguments); } publ ...