压力测试报出503错误---ASP.NET支持大并发的相关配置

项目反馈报出503错误,需要收集性能数据如下:

1、Windows性能监视器,该应用程序池进程的线程和处理队列

2、问题重现时的进程dump

这是请求到达IIS后遇到的第一个队列,HTTP.sys收到请求后会将请求放入对应的应用程序池队列,这样可以减少上下文的切换。需要注意的是应用程序池队列虽然是给w3wp进程用的,但它存在于http.sys的内存区(http.sys是一个运行于kernel-mode的设备驱动程序)。如果把http.sys比作一块网卡,那应用程序池队列相当于网卡的缓冲区。

w3wp从应用程序池队列中取出请求后,接下来就是从CLR线程池中捞出一个CLR线程处理请求,如果池中空无一线,就会将请求放在CLR线程池队列中。

检测两个队列的情况,可以使用Windows性能监视器

Http Service Request Queues\CurrentQueueSize

Http Service Request Queues\ArrivalRate

ASP.NET v4.0.30319\Requests Queued

ASP.NET v4.0.30319\Requests Current

应用程序池(Application Pool –> 高级设置  –> 队列长度)

  • General->Queue Length设置为65535(队列长度所支持的最大值,缺省值为1000)

  • Recycling->Regular Time Interval设置为0(取消应用程序池固定时间间隔的自动回收,缺省值为1740)
  • Process Model->Idle Time-out设置为0(取消应用程序池因为空闲超时而关闭,缺省值为20分钟)
<!-- 调大应用程序池的请求队列 -->
C:\Windows\System32\inetsrv>appcmd set apppool webform -queueLength:65535
<!-- 取消固定时间间隔的回收 -->
C:\Windows\System32\inetsrv>appcmd set apppool webform -recycling.periodicRestart.time:00:00:00
<!-- 设置指定时间点的回收 -->
C:\Windows\System32\inetsrv>appcmd set apppool webform /+recycling.periodicRestart.schedule.[value=‘04:15:00‘]
<!-- 取消空闲超时的进程关闭 -->
C:\Windows\System32\inetsrv>appcmd set apppool webform -processModel.idleTimeout:00:00:00
<!-- 开启所有回收事件的日志 -->
C:\Windows\System32\inetsrv>appcmd set apppool webform -recycling.logEventOnRecycle:"Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"

IIS  (C:\Windows\System32\inetsrv\config\applicationHost.config)

1、设置命令:

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

2、设置结果:

<!-- IIS并发请求数 --> 
<serverRuntime appConcurrentRequestLimit="100000" />

.NET Framework & ASP.NET  (C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 和 WebAppRoot\web.config)

<!-- .NET Framework 进程模型 配置,最大工作线程(真实的线程数 = 此值 * 逻辑CPU数) --> 
<processModel enable="true" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" minIoThreads="50" />
<!-- ASP.NET 请求处理队列 --> 
<httpRuntime appRequestQueueLimit="100000"/>

网络协议

1、将最大连接数设置为10万

reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000
 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxFieldLength /t REG_DWORD /d 32768
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxRequestBytes /t REG_DWORD /d 32768
 

2、修改TCP MaxUserPort限制(由默认5000改为65534)

reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v MaxUserPort /t REG_DWORD /d 65534

3、 net stop http  & net start http & iisreset  (干脆直接重启计算机)

时间: 2024-10-10 10:36:20

压力测试报出503错误---ASP.NET支持大并发的相关配置的相关文章

PHP的压力测试工具ab.exe 和mpm介绍提高并发数

该工具是apache自带的,可以用它来测试网站的并发量有多大和某个页面的访问时间. 基本用法: 1.  进入CMD,转到apache的bin目录下. 2.  执行命令ab.exe  -n 访问的问次数–c 多少人访问(并发量) 访问的地址如:ab.exe –n 1000 –c 100 http://localhost/index.php; 如输入以下命令ab.exe-n 10000 -c 100 http://localhost/test/index.php, Index.php的内容为 <?p

压力测试~一套完整的压力测试项目文档

Web压力架构 张占岭 Web压力架构... 1 一 系统性能测试概述... 1 1.1 性能测试概述... 1 1.2 性能测试的指标... 2 1.3 关键点的描述... 2 1.4 性能测试的目的... 2 1.5 测试项目开发规范... 2 二 使用VS压力测试工具进行测试... 3 2.1 性能测试(WebTest). 3 2.1.1 概念... 3 2.1.2 如何建立性能测试... 3 2.1.3 使用CS代码快速建立性能测试... 5 2.1.4 运行当前性能测试... 6 2.

软件测试中的压力测试和性能测试

软件测试的目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性.,这个定义听起来很正确,但用它来指导测试会带来很多问题.比如有的组织用发现的bug数来衡量测试人员的业绩,其实这就是这种测试目的论在后面作祟,其结果如何呢:其一,有一些不够敬业的测试人员会找来一些无关痛痒的bug来充数,结果许多时间会被浪费在这些无关痛痒的bug上(其实应该修复,何时修复,严重程度是什么,优先级是什么,等等);其二,测试人员会花很大力气设计一些复杂的测试用例去发现一些迄今尚未发现的缺陷,而不关心这些缺陷是否在实

使用COSBench工具对ceph s3接口进行压力测试

一.COSBench安装 COSBench是Intel团队基于java开发,对云存储的测试工具,全称是Cloud object Storage Bench 吐槽下,貌似这套工具是intel上海团队开发的,竟然没有中文的相关资料. 同所有的性能测试工具一样,COSBench也分控制台和发起请求的driver,且driver可以分布式部署.可以支持swift.s3.Openstack等接口 1. 下载COSBench工具 下载地址为:https://github.com/intel-cloud/co

Nginx使用webbench进行压力测试

在运维工作中,压力测试是一项非常重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验. 但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100%和线上性能指标相 同.面对这些问题,我们只能尽量去想方设法去模拟.所以,压力测试非常有必要,有了这些数据,我们就能对自己做维护的平台做到心中有数. 目前较为常见的网站压力测试工具有webbench.ab(apache ben

windows Server 2008 IIS7 503错误解决方案

windows 2008 R2 在访问的时候经常会出现503错误,于之前使用的是默认配置,服务器最多只能处理5000个同时请求,今天下午由于某种情况造成同时请求超过5000,下面是具体的解决方案: windows 2008 R2 在访问的时候经常会出理 503错的解决方案 Error Summary: HTTP Error 503.2 - Service Unavailable The [email protected] setting is being exceeded. Detailed E

压力测试和性能测试的区别

1.性能测试(Performance Test):通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用.关注点:how much和how fast 2.负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担.关注点:how much 3.压力测试(Stress Test): 压力测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方.包括:Spike testing(尖峰冲击测试):短时

话说网站压力测试

作为一名合格的网站的架构师,需对网站整体能承载的压力了如指掌,只有这样才能做到运筹帷幄,决胜千里. 尤其是一个新项目在上线之前,首要做的是在预演环境,模拟用户访问进行压测,这样,对于其能承受多大访问量.在高并发情况下,web服务及服务器硬件的性能如何? 这些数据指标我们都要收集.以此来对上线后的真实环境下,用户体验效果的优劣做出正确评估. 但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100%和线上性能指标相同.面对这些 问题

nginx压力测试及防止恶意压力测试的方法

nginx压力测试方法: #ab命令 #安装ab #Centos系统 yum install apr-util #Ubuntu系统 sudo apt-get install apache2-utils #ab命令的参数 -n //在测试会话中所执行的请求个数.默认为1 -c //一次产生的请求个数.默认为1 -t //测试所进行的最大秒数.默认值为50000 -p //包含了需要的POST的数据文件 -T //POST数据所使用的Content-type头信息 #实例 ab -c 1000 -n