在测试过程中,我们经常需要知道“系统的资源利用情况”来监测我们的测试执行情况,来查看测试环境是否有效,测试结果是否可信,或者是在无人值守时保存结果,等我们值班时再来分析。 

  1、在Windows环境下,“开始\运行”中输入“perfmon”,调出性能管理窗口;

  2、在控制台节点中选择“性能日志和警报\计数器日志”;

  3、在右侧的空白窗口中右击选择“新建日志设置”,在弹出的窗口中输入新建日志的名称,如PerfTest,确定; 如图:

<IIS站点,则选择Web Servie 项 , 最后选择左下角具体的站点项目>

//=========================================================================================

一个ASP.NET项目在运营中,当接口并发量达到200左右时,IIS出现了明显的请求排队现象,发送的请求都进入等待,无法及时响应,Cpu接近100% 。花了很多时间精力解决这个问题,其中百度找了一解决方案,供大家参考。

注意到只有对于.aspx或.ashx的请求才会延迟,而.htm或.jpg文件都是即时响应的,我选择了性能监视器中的ASP.NET 4.0中的2个主要计数器:Requests Current(当前请求数), Requests Queued(被排队的请求数),如下图:(在左上角的列表中选择asp.net 4.0,  双击选择左下角的二个目标,完成添加)

进行观察。通过观察发现,当前请求数达到200左右时,被排队的请求数就从0开始上升,一直到50左右,如果请求数继续上升,则被排队数也随之上升。当被排队的请求数>0时,就意味着这个时候去访问任何.aspx页面,页面都会处于长时间等待中,没有任何响应,直到IIS处理完了其他请求,才会开始处理队列中的请求。也就是说,当排队数长期>0时,系统基本处于不可用的状态。就是说200个并发请求下,几乎所有的请求都被排队了,如下图

针对以上问题,查阅了相关资料,是否出现排队是和应用程序池的可用线程有关,通过2个方法可以查看系统总线程数和当前可用线程数。

ThreadPool.GetAvailableThreads( out availableWorker, out availableIO);

ThreadPool.GetMaxThreads(out maxWorker, out maxIO);

在队列请求数达到120左右时,通过此方法,得到maxWorker=1600,而availableWorker=1472

因为服务器是16核的,ASP.NET4.0默认每核可以使用100个线程,所以maxWorker是1600,1600-120=1480,大致相等。

就是说当前有120个线程被用来处理请求,还有1400多个处于空闲。关键问题就是为什么这些空闲线程没有被及时启用?

ASP.NET提供的线程配置参数中,有一个参数是非常重要,但是可能被大家忽略的,就是minWorkerThreads。

意指最小工作线程,根据我们以上的测试结果,IIS托管线程启动非常慢,微软也认识到了这个问题,所以提供此参数用于设置正常情况下的最小工作线程数。比如我们系统白天的并发在200-300之间,则可以设置最小线程为300,这样系统响应速度可以大幅提高。

据此,我对配置文件(machine.config)进行了如下修改。注意都是针对单个CPU的,系统会自动乘以逻辑CPU的数量。

<system.web>
<processModel autoConfig="false" maxWorkerThreads="200" minWorkerThreads="50" />

本文转自:http://www.cnblogs.com/Fooo/p/3341775.html

其他相关参考网站:http://www.cnblogs.com/tianguook/p/5204757.html

Windows性能查看器:系统的性能信息(I/O,IIS最大连接数,Sql) ,以及解决 asp.net IIS 一二百多用户并发...相关推荐

  1. 查看linux系统的性能

    查看linux系统的性能,一般可以通过free.iostat.vmstat.top等命令来查看 [root@kumu ~]# free              total       used    ...

  2. Windows系统的【Windows照片查看器】没有了

    Windows系统的[Windows照片查看器]没有了 有时候想用[Windows照片查看器]打开图片的时候发现在打开方式里找不到这个功能时候,可能是系统没有这个功能,需要重新安装.献上一段注册表代码 ...

  3. 【第022篇】解决win10系统使用Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足

    题外话: Win10系统怎样让打开图片方式为照片查看器 点击这里 有时候win10系统上使用[Windows 照片查看器]的时候提示:Windows 照片查看器无法显示此图片,因为计算机上的可用内存可 ...

  4. 解决Total Commander总是使用老旧的“Windows照片查看器”打开图片的问题

    随着Windows的更新,新的"照片"应用取代了原来的"Windows照片查看器"应用,好处有很多,比如自带简单的编辑功能,比如对于高分辨率屏幕的支持更好等. ...

  5. 打开微信另存的 jpg 图片时,提示“Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足”

    问题描述: 打开微信另存的 jpg 图片或者通过微信拍照上传的图片时,提示"Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足",出现以下信息 解决方案: 目 ...

  6. Windows 事件查看器(收集)

    事件查看器相当于一本厚厚的系统日志,可以查看关于硬件.软件和系统问题的信息,也可以监视 Windows 的安全事件 提示:除了可以在"控制面板→管理工具"中找到"事件查看 ...

  7. 干货 | 最新Windows事件查看器.NET反序列化漏洞分析

    0x01 漏洞背景 4月26日@Orange Tsai 在Twitter上发表一个有关Windows事件查看器的反序列化漏洞,可以用来绕过Windows Defender或者ByPass UAC等其它 ...

  8. win10找回Windows照片查看器

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 很多使用win10的童鞋都在抱怨,在win10下查看图片.win10默认的 照片应用真心不给力,还是喜欢win ...

  9. html图片通过照片查看器打开图片,在Windows7中打开照片,提示“Windows 照片查看器无法显示此图片,因为计算机上...

    在Windows7中打开照片,提示"Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果硬盘几乎已满),然后重试. ...

最新文章

  1. NTU课程笔记 :CV6422(4) sampling process
  2. C++使用linked list(链表)实现circular queue(循环队列)(附完整源码)
  3. tomcat套接字接受失败_07 | What? 还有本地套接字?
  4. libcurl 发送邮件_libcurl smtp发送邮件附件大小限制问题
  5. springBoot微信支付(native)基本使用
  6. 一周新闻纵览:谷歌浏览器信息泄露,出卖个人信息获利终落网,严查App偷窥乱象
  7. IP数据包和ICMP数据包的结构
  8. python随手记自动记账_简化记账——我的“随手记”
  9. OA系统新流程创建与管理办法
  10. 刷脸支付帮助店铺构建细致准确的用户画像
  11. php中怎样添加文字水印,php给图片添加文字水印
  12. U8glib如何显示中文
  13. DNS服务器无响应win10系统,Win10上的DNS服务器无响应:这是如何解决它
  14. Uni-app API
  15. java热敏POS打印机编程
  16. Python基础(十八):学员管理系统应用
  17. 2022软科世界大学学术排名
  18. YYKit Demo
  19. Vue基于python的用户兴趣的电影视频播放推荐系统django
  20. 计算机word知识点小技巧,史上最全的Word技巧大全 掌握这些你也能成为Word高手...

热门文章

  1. Qt Creator编辑状态图
  2. C++horspool算法查找字符串是否包含子字符串(附完整源码)
  3. C++链表linked list(附完整源码)
  4. QT的QScopedPointer类的使用
  5. QT的QQmlNdefRecord类的使用
  6. QT的QHttpMultiPart类的使用
  7. C++赋值运算符重载
  8. 经典C语言程序100例之二九
  9. mysql中depart_mysql 学习笔记
  10. 使用JMeter进行数据库压力测试