我在我们制作的网站上遇到了性能问题,而且我不确定如何开始诊断它.
简短的描述是:我们有一个非常小的站点(http://hearablog.com),流量非常小,在一个糟糕的专用服务器中,CPU总是非常高,有时几分钟保持100%,而w3wp.exe占用了大部分.典型的情况是w3wp.exe需要60%,而SQL Server需要大约30%.
我们的DB也很小.
详细说明和更多细节:
>该网站由Cari.Net托管在一个非常糟糕的服务器上.从一开始我们就感觉服务器的行为不正常,就像有些东西需要的时间太长,所以这可能是一个配置问题.也许我们正在获得一个虚拟服务器,而我们应该有一个专用服务器,虽然我们没有证据表明这一点,除了服务器往往很慢的事实.
>服务器是Windows 2008 Standard 64位,带有SQL 2008 Express
>硬件是Celeron 2.80 GHz,1Gb RAM
>该网站是在ASP.Net MVC中开发的,使用Entity Framework进行数据访问.
>现在,这是非常糟糕的硬件,但我有这些家伙的其他服务器,具有相同(或更糟)的硬件,并且性能比这个好得多.也就是说,其他服务器有W2003和SQL2005,我使用ASP.Net“WebForms”2.0,没有MVC,没有LINQ,没有EF;所以我不确定是否要进入2008年/其他东西意味着预期会有很大的性能损失.
>我经常提供MP3文件(5-20?? Mb),这是一个有点不寻常的负载,可能是造成某种问题?
这会导致w3wp使用大量的CPU吗?
>磁盘使用率似乎非常低.内存通常约为90%,但磁盘使用情况似乎表明它的分页不多.
>我每天都会收到大量关于SQL超时的电子邮件,对于超过30秒的查询,尽管我们所有的查询都非常简单(或者应该是,但EF可能会搞砸它).
这是资源监视器在100%CPU的这些“冲刺”之一中的样子,以防有任何有用的东西.
以及一些性能计数器的快照:
现在,令我困惑的是w3wp的CPU使用率如此之高.
真的不应该做多少……
所以我的问题是……
>有没有办法找出它正在做什么?也许甚至简介呢?
>我应该关注的任何表现计数器?
>鉴于此硬件/软件配置,这是否可以预期?
>这可能是某种配置失败造成的,你会从哪里开始寻找?
非常感谢你.
Daniel Magliola
您还可以使用IIS管理器中的工作进程UI,检查当前正在执行的请求,并查看它们被卡住的位置(如果有).
打开IIS管理器 – >单击树中的服务器 – >双击工作进程图标 – >双击正在使用CPU的工作进程实时查看当前正在执行的请求,以便您可以看到正在执行的模块时间.
还要考虑使用失败请求跟踪来跟踪每个请求的某些时间,以查看它们花费很长时间的位置.