IIS/ASP.NET 性能事件 - Perfmon 当前匿名用户数量激增但请求数/秒较低

IIS/ASP.NET 性能事件 - Perfmon 当前匿名用户数量激增但请求数/秒较低

设置:Win 2003 64 位系统上 IIS 6.0 上的 ASP.NET 4.0 网站,8xCPU,16GB 内存,单独的 SQL 2005 DB 服务器。

今天,任何性能相当不错的 ASP.NET 站点都出现了严重的减速。在几个小时的时间内,所有页面请求都需要很长时间才能得到处理 - 例如 30-60 秒,而通常只需 2 秒。Web 服务器上 w3wp.exe 的 CPU 和内存使用率并不比正常情况高很多。应用程序池未处于回收过程中(并且已经好几个小时没有回收了)。排除了数据库中的瓶颈 - 没有发生阻塞,查询结果快速返回。我无法理解它,并设置了以下 Perfmon 计数器:

  • 当前匿名用户(针对相关网站)
  • 获取请求数/秒 (同上)
  • 运行网站的 ASP.NET 应用程序的请求数/秒

Get 请求数/秒平均为 100-150。ASP.NET 的请求数/秒平均为 5-10。但是当前匿名用户数约为 200。然后,在我观察时,当前匿名用户数开始急剧上升,在几分钟内上升到 500 左右。在此期间,Get 请求数/秒和 ASP.NET 的请求数/秒一直在下降。

我(慌乱中!)做了一大堆事情,试图让网站正常运行,比如关闭它、回收应用程序池,以及向池中添加另一个工作进程。我还延长了内容的过期时间(在 IIS 的 HTTP 标头下),试图降低对静态文件的请求数量(网站上有很多图片)。

该网站现已恢复正常,并且计数器相当稳定并读数(添加了当前连接计数器):

  • 目前匿名用户:平均30
  • 获取请求/秒:平均 100
  • ASP.NET 的请求数/秒:5
  • 当前连接数:平均 300

我还观察到每秒获取请求数与当前匿名用户数之间存在反比关系。通常两者都相当稳定,但会有短暂的时期,每秒获取请求数会急剧下降,而当前匿名用户数会以完美的镜像方式上升。然后它们会回到正常水平。

所以,我的问题是:

想想最初的性能问题 - 如果 w3wp.exe CPU、内存使用率正常,并且没有数据库瓶颈,那么如何解释页面请求的处理时间比平时长 20 倍?如果再次发生这种情况,我应该查看哪些其他计数器?

如何解释每秒获取请求数和当前匿名用户数之间的反比关系?

如何解释当前匿名用户数量在几分钟内从 200 人增加到 500 人?

非常感谢您对此的任何见解。

答案1

找到答案如何解释每秒获取请求数与当前匿名用户数之间的反比关系? 这里:http://www.it-notebook.org/iis/article/current_connections_users.htm

当前匿名用户数是衡量当前正在处理的活动匿名请求的指标。请求处理完毕后(通常处理速度很快),“当前匿名用户数”会减少

因此,如果请求需要很长时间来处理,则每秒获取的请求数将会下降,而当前匿名用户数将会上升。

相关内容