我应该关注ASP.NET应用程序的哪些关键性能监视器

时间:2009-06-29 18:45:05

标签: asp.net performance monitoring

我的网站每天会收到500万个请求。在繁重的日子里,页面大约需要10秒才能返回。我也没有内存异常。我一直在阅读微软的Improving .NET Application Performance and Scalability,看到我可以看到很多指标。我的问题是:

我应该关注的最基本的计数器是什么:

  • 告诉我10秒花在哪里
  • 告诉我记忆在哪里 使用

这是一个在带有IIS6的Win2003上运行的ASP.NET 2.0应用程序

5 个答案:

答案 0 :(得分:1)

由于每天的请求数量约为500万条记录,而且还在增长,

我建议如下:

客户端

获取Fiddler并获取每页请求数量及其周转时间的读数。执行此操作,首先请求和连续请求。理想情况下,在对数据进行采样并从中得出结论之前,应对5个第一次请求和5次连续请求的数据进行采样。

从中读取的参数是:

  • 每页有多少个请求 发生了吗?
  • 他们中有多少人可以 缓存?
  • 瓶颈资源?

服务器端

为了识别服务器端转动时间,我会建议Ayendes,Rhino.HttpModule或者某些,我不记得确切。它给出了服务器端页面的周转时间。

从中读取的参数是:

  • 是服务器端问题还是客户端问题?

在此之后,您应该处于明确的位置,无论是客户端问题还是服务器端问题。有了这些,那么你可以专注于参数。

最后一点,我认为您可以取消对代码的任何更改。因为,您建议在负载下,周转时间约为10秒。请注意,浏览器一次不能请求超过6(+/- 2)个资源。因此,负载下的东西正在加载您的Web服务器。模拟情况并查看请求数,Team Foundation System应该有所帮助。此外, IIS报告可能会在服务器端提供请求。看看他们。他们可能会给你一个清晰的画面。

希望这会有所帮助。

答案 1 :(得分:0)

如果你从一个非常基本的层面看它,你只有4个主要的东西:

  • 磁盘
  • CPU
  • 内存
  • 网络

您可以监控这些:磁盘是队列长度,其他是%利用率。

然而,问题可能不是其中之一。例如,它可以是配置设置,用于设置最大连接数。开始查找这些内容的好地方是IIS错误日志或事件日志。

答案 2 :(得分:0)

轻松提升性能的关键并不总是编写应用程序的方式。它可以尽可能完美地编写,但仍然存在性能问题。获得快速页面加载时间的一种方法是使用页面缓存。

following article是一个好的开始。

答案 3 :(得分:0)

您没有说明潜在问题的位置,因此请从@Shiraz提到的基础知识开始。您可以深入了解性能计数器,以便指出问题所在。

一旦你将它缩小到特定区域,你就可以深入挖掘一下,看看它是编码问题还是硬件问题。

但是没有一个神奇的“看这个”来解决你的问题。解决可扩展性问题很难。

答案 4 :(得分:0)

关键绩效指标:

有些人在其他答案中已经提到过这一点。 我不记得实际的计数器名称,但总的来说: 每秒请求数(Web) %处理器(Web和SQL) 内存GC(大堆,第0代,第1代,第2代) SQL Server的缓存命中率 磁盘队列长度(Web和更重要的是您的SQL) 任何与SQL中的阻塞和死锁相关的计数器

在回答上述问题时:

通过性能监视器并不能真正告诉您问题的答案。 您可能需要进行一些Web负载测试,因为如果您不对其进行测试,我保证您的应用程序在加载时的行为会有所不同。

您想要尝试熟悉的工具来回答这些问题: .NET Profiler(用于分析ASP.NET代码) .NET CLR Profiler(用于分析内存使用情况)

但是,仍然首先创建Web测试(您可以轻松地开始使用Fiddler)并进一步定制(以便能够进行数据绑定)w / VS并运行负载测试w /接近真实数据表示(容量)和用户数量。 从Web测试中,您应该能够确定哪个页面表现不佳。 然后深入剖析剖面仪以找出原因。

您已经在正确的轨道上查看ScaleNet.pdf(或在线版本)。这有点过时了,但它仍然有效。继续阅读并应用你在那里阅读的内容。