我遇到了使用ASP.Net/C#开发的网站的问题,有时无限期地使用所有CPU使用率(100%)。你有什么想法/提示如何去解决可能会导致这样的资源猪?该网站仍在响应,所以它不会崩溃或类似的东西。诊断asp.net网站/应用程序池的性能
我有点无知从哪里开始!
谢谢!
我遇到了使用ASP.Net/C#开发的网站的问题,有时无限期地使用所有CPU使用率(100%)。你有什么想法/提示如何去解决可能会导致这样的资源猪?该网站仍在响应,所以它不会崩溃或类似的东西。诊断asp.net网站/应用程序池的性能
我有点无知从哪里开始!
谢谢!
DebugDiag资料是一个伟大的地方开始:http://www.microsoft.com/download/en/details.aspx?id=26798
谢谢,这个工具被证明非常有用,可以找出正在运行的服务器上正在执行的线程! – 2012-05-23 11:40:23
开始使用服务器上的性能计数器。为垃圾收集,线程使用情况添加计数器,并准确查看哪个线程在使用CPU。
而且,看看这个:
对不起,但我在国外 - 我在哪里可以找到'线程使用'性能计数器?这是一个活动的服务器,它没有安装Visual Studio副本。理想情况下,我可以抽样说4个小时的时间,并查看哪些线程对CPU使用率有贡献。理想情况下,我会在某个时间点知道调用堆栈,因为这对诊断问题会有很大的帮助。有任何想法吗? – 2012-04-09 13:44:45
我在过去有一个同样的问题。我主要遇到HTML rendering
问题很慢。 我通过在页面指令中设置Trace = true
解决了这个问题,并找出了需要花费时间的事件。
另一个问题是Memory Management
。我正在使用Image Classes
,并没有正确地使用Dispose
。为此,我开始使用Dispose()
方法,并且我可以在架构中使用语句。
using (SqlConnection con = new SqlConnection("Connection String"))
{
using (SqlCommand cmd = new SqlCommand())
{
using (SqlDataReader DR = cmd.ExecuteReader())
{
}
using (DataTable DT = new DataTable())
{
}
}
}
我想你可能有任何页面,你可能会提取过多的记录。您可以开始使用Paging
。
最重要的一点是Exception Handling
。 Try Catch
块不应该在每一层。它应该只在Presentation Layer
。原因是,当发生异常时,它会直接返回到调用函数。那么为什么要写Try Catch
块,并因此在每一层stopping the execution
最好的和最简单的出发点是使用性能分析器。只要运行它,运气好点就会在几分钟内解决问题。
尝试dotTrace,这是一个很好的。如果你按照链接,有10天的免费试用和视频教程。
问题仅在特定页面中? – Pankaj 2012-03-30 10:29:51