您怎么知道w3wp.exe在做什么?(或如何诊断性能问题)


42

我在我们制作的网站中遇到性能问题,但我不确定如何开始进行诊断。

简短的描述是:我们有一个非常小的站点(http://hearablog.com),在非常糟糕的专用服务器中,CPU总是非常高,有时它会保持100%持续几分钟,而w3wp.exe却是非常糟糕的专用服务器。正在占用大部分。典型的情况是w3wp.exe占60%,而SQL Server约占30%。我们的数据库也很小。

详细说明和更多详细信息:

  • 该网站由Cari.Net托管在非常糟糕的服务器中。从一开始,我们就感觉到服务器无法正常运行,就像有些事情可能花费太长时间一样,因此从一开始就可能是配置问题。这可能也是我们得到了一个虚拟服务器,而我们应该有一个专门的一个,虽然我们没有证据说会中指出,除了服务器往往是相当缓慢的事实。

  • 该服务器是Windows 2008 Standard 64位,带有SQL 2008 Express

  • 硬件是Celeron 2.80 GHz,1Gb RAM

  • 该网站是在ASP.Net MVC中使用实体框架进行数据访问而开发的。

  • 现在,这是非常糟糕的硬件,但是我与这些人一起拥有其他服务器,它们的硬件相当(或更糟),并且性能比这更好。也就是说,其他服务器具有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)

Answers:


42

您还可以在IIS管理器中使用“工作进程” UI,检查当前正在执行的请求,并查看它们在哪里卡住(如果有)。打开IIS管理器->单击树中的服务器->双击工作进程图标->双击消耗CPU的工作进程,以实时查看当前正在执行的请求,从而可以看到哪个模块正在花费时间。

还可以考虑使用“失败请求跟踪”来跟踪每个请求的一些时间,以了解它们花费了长时间。


2
这很有希望,实际上听起来确实像我想要看到的,但实际上这些屏幕显示为空白。根据上方的大符号显示,显然只显示了耗时超过一秒的请求,而我们的请求显然都没有,因为该列表为空。关于如何使其显示更多请求的任何想法?如何降低1s滤波器?谢谢!
丹尼尔·麦格罗拉

1
您可以在过滤器中键入0,然后单击执行,它将设置为0秒。另外,您可以从提升的命令提示符下运行“%windir%\ system32 \ inetsrv \ appcmd.exe列表请求”
Carlos Aguilar Mares

1
非常感谢卡洛斯!这就是我最终要查找的一个请求(我们拥有一个cron),该请求每5分钟就会杀死我的服务器(运行需要3.5分钟,因此几乎始终以100%CPU运行)。谢谢!!!
丹尼尔·麦格罗拉

1
这个UI告诉我已经访问了什么URL。不幸的是,这是对asmx Web服务的POST,并且该数据不可用。(爆头)
Ross Presser

5

好的,开始-服务器真的很烂。但这应该足够了。

  • 对于虚拟化,请检查驱动程序。我知道没有隐藏CPU的虚拟化平台(我敢说有人在celeron上安装了hyper-v或esx),但是光盘等的驱动程序只是一个指示。

  • CPU不应该那么高。可悲的是,有了这个RAM,您几乎可以吐司了-如果您开始添加一个探查器,则几乎会消耗您的内存。

我会:

  • 检查日志,以了解此时正在执行的内容。
  • 将操作系统升级到2008 R2-那里有很多详细信息。

供测试用:

  • 在您的开发环境中,复制该站点并运行一些性能测试。
  • 在那里进行剖析。
  • 使用失败的请求跟踪来找出哪些请求失败。

http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis-7/

从那里开始。如果问题更多,可能会给您提示-hm-“可分类”。

我还将保留长期性能日志。注意您的IO(秒/读,秒/写几乎是唯一相关的IO)。其余所有信息在IO方面都太含糊-但是一旦您的IO开始花费的时间超过应有的时间,光盘就会落后。

在这一点上,我将排除配置问题-至少作为主要指标。W3p资源耗尽了,现在您需要找出它是什么。

通常,这不是我希望拥有物理服务器的服务器-它是如此之小,恕我直言,在那儿拥有一台机器是没有意义的。虚拟会更好;)


非常感谢您的回答。一些问题:您现在会检查哪些日志来执行内容?(很抱歉,如果这是一个新手问题)-升级操作系统:我们可能会尝试这样做,但恐怕它可能会破坏某些东西,也许这有多安全?-开发环境:问题是在我的开发环境中它可以正常工作。CPU是微不足道的,请求不失败,等等
丹尼尔Magliola

至于I / O日志:我刚刚添加了您提到的计数器,当CPU处于高电平时,它们全部为0。我刚刚添加了一些正在查看的性能计数器的屏幕截图。我知道快照不能说明全部情况,但是这些值往往很稳定。您认为当前连接的数量(我没有解释)可能是个问题吗?关于如何弄清楚这些连接正在请求/做什么的任何想法?您认为还有其他计数器可用于诊断类似情况吗?
Daniel Magliola

好吧,R2很安全。我升级了所有东西,没有遇到任何问题。无论如何....这是一个CPU问题,特别是考虑到您没有足够的RAM来安装探查器,则可能会非常麻烦。我实际上会尝试完全重新安装。是的,很糟糕,但这意味着您可以全新安装R2并查看问题是否仍然存在。不好的是,您没有备用系统,因此您无法确定问题是“本地”还是更普遍。或者:停止IIS,擦除所有正在使用的临时文件夹,以及
TomTom 2010年

进行编译,并查看重新启动后会发生什么。使用R2,您可以查看IIS是否打开了哪些文件。这对于一个Web应用程序是本地的,还是在所有网站都停止的情况下也存在?下一件可尝试的操作-关闭所有站点,找出哪个站点有问题。
TomTom

最后,虚拟服务器的问题在于,据我所知,我们最终为相同的硬件支付了更多或相同的费用,此外,带宽账单是致命的(请记住,我们提供音频文件)。我们将进入一个更大的服务器,如果我们必须这样做,但说实话,我们所拥有的交通,必须有一些问题,我们不应该使用100%的CPU曾经..来
丹尼尔Magliola



1

我完全同意TomTom的观点,尤其是在这一点上,要获得来自Virtual的更好里程。正确地进行本地调试/性能分析以缩小问题的范围。

我要戴上我的Karnak The Magnificent帽子和斗篷,索要第一个信封。拉姆叛乱。将OS,ASP.NET和贪婪的SQL Server Express放入1GB时会得到什么。

我相信您的问题是SQL Server Express正在为缓冲池拉入所有可用的RAM,并且释放它的速度很慢。有关更多信息,请参见http://support.microsoft.com/kb/321363。此外,IIS的默认缓存为256MB,您可能需要对其进行调整(https://stackoverflow.com/questions/2853135/controlling-asp-net-output-cache-memory-usage)。 Debug Diagnostics是解决此问题的好工具(好的,可能是大锤)。

http://technet.microsoft.com/zh-cn/library/bb742546.aspx是一篇不错的文章。 http://social.technet.microsoft.com/forums/zh-CN/sharepointadmin/thread/706c653a-16b0-4696-85ee-9ae3552a582e指出应用程序池回收成为另一个可能的问题。


1

使用Perfmon的“进程”计数器来查看w3wp.exe进程的各个属性。辅助进程中有多少CPU时间是内核时间?高内核时间可能表示分页,但是您说您不相信。其他可能性是达夫司机。worker进程有活动的23个线程,这很好,但是它们在做什么?尝试SysInternals的ProcessExplorer进行更多挖掘;您还可以查看正在使用的TCP / IP连接。我没有使用过SQL Express,但是它有内存调优参数,就像它的老大哥一样。SQL是否使IIS的内存不足,导致分页过多?


让我们看看我是否做对了……我为w3wp进程添加了%processor时间和%user time计数器,并且它们一直都完美匹配。这是否意味着没有内核时间,还是我看错了方向?(对不起,我是这个领域的新手)
Daniel Magliola,2010年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.