我的网站每天会收到500万个请求。在繁重的日子里,页面大约需要10秒才能返回。我也没有内存异常。我一直在阅读微软的Improving .NET Application Performance and Scalability,看到我可以看到很多指标。我的问题是:
我应该关注的最基本的计数器是什么:
这是一个在带有IIS6的Win2003上运行的ASP.NET 2.0应用程序
答案 0 :(得分:1)
由于每天的请求数量约为500万条记录,而且还在增长,
我建议如下:
获取Fiddler并获取每页请求数量及其周转时间的读数。执行此操作,首先请求和连续请求。理想情况下,在对数据进行采样并从中得出结论之前,应对5个第一次请求和5次连续请求的数据进行采样。
从中读取的参数是:
为了识别服务器端转动时间,我会建议Ayendes,Rhino.HttpModule或者某些,我不记得确切。它给出了服务器端页面的周转时间。
从中读取的参数是:
在此之后,您应该处于明确的位置,无论是客户端问题还是服务器端问题。有了这些,那么你可以专注于参数。
最后一点,我认为您可以取消对代码的任何更改。因为,您建议在负载下,周转时间约为10秒。请注意,浏览器一次不能请求超过6(+/- 2)个资源。因此,负载下的东西正在加载您的Web服务器。模拟情况并查看请求数,Team Foundation System应该有所帮助。此外, IIS报告可能会在服务器端提供请求。看看他们。他们可能会给你一个清晰的画面。
希望这会有所帮助。
答案 1 :(得分:0)
如果你从一个非常基本的层面看它,你只有4个主要的东西:
您可以监控这些:磁盘是队列长度,其他是%利用率。
然而,问题可能不是其中之一。例如,它可以是配置设置,用于设置最大连接数。开始查找这些内容的好地方是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(或在线版本)。这有点过时了,但它仍然有效。继续阅读并应用你在那里阅读的内容。