Tags标签 网战地图
当前位置: 主页 > 网站建设 > asp.net教程 >

ASP.NET Debug系列之二 Hang调试

2012-07-03 17:34 [asp.net教程] 来源于:
导读:前几天我翻译了Tess debug系列的第一篇文章以及和大家介绍了一些debugger tools的基本命令。今天我们将一起讨论Tess关于debug 系列的第二篇文章。Tess在每个系

前几天我翻译了Tess debug系列的第一篇文章以及和大家介绍了一些debugger tools的基本命令。今天我们将一起讨论Tess关于debug 系列的第二篇文章。Tess在每个系列中都使用了问题+结果的结构,为了简化,我将把问题和结果一起给大家。此外,大家在自己机器上重现这些问题的时候,由于机器的差异,许多问题的结果都可能和Tess的不一样,这个不要紧,只要大家能够掌握原理就可以了。同时,由于blog的尺寸问题,图片显示的内容并不十分清晰,大家可以从Tess的链接上去找。

ASP.NET Debug系列之一:环境搭配

Windbg,sos,tinyget,adplus常用命令

1.问题重现

1.浏览页面:http://localhost/BuggyBits/FeaturedProducts.aspx

大概需要5秒左右的时间来呈现这个页面,大家也可以从页面下脚的开始和结束时间来判断。

2.打开5个浏览器,并同时浏览刚才的页面。

这里需要注意的是,如果你几乎同时刷新刚才的页面了,但并没有看到这5个页面上显示相近的开始时间,那么很有可能你没有运行InternetConnections.reg文件。如果没有,双击它使它修改注册表,然后重新测试。

问题1:5个页面各自的运行时间是多少?

结果1:5个浏览器的结果分别是:1-5.0s,2-9.1s,3-12.57s,4-16.07s,5-18.61s。如果你看到每个request的时间间隔在5秒左右,那么你很可能是没有运行InternetConnections.reg文件。

问题2:w3wp.exe的CPU占用率是多少,高还是低?

结果2:非常低的CPU占用率,只有0~5%。

问题3:对于这种低CPU占用率的hang问题有什么潜在原因呢?

结果3:对于这种处理request时间在不断增加并且CPU占用率低的情况来说一般有如下两个原因:1)所有的request在等待一个单thread独占的资源,即这个资源只能被1个thread单独使用。这样的话,其他所有thread就需要等待。2)我们在等待一个资源,由于该资源仍未可用,导致所有需要该资源的thread阻塞。

2.获取dump

1.打开一个命令行窗口,并切换到debugger tools的安装目录。输入以下命令,但请注意,不要立即按enter。

Adplus –hang –pn w3wp.exe –quiet

2.重新打开一个命令行窗口,同样切换到debugger tools目录,使用tinyget脚本来对页面进行并发访问。

tinyget -srv:localhost -uri:/BuggyBits/FeaturedProducts.aspx -threads:30 -loop:50

这个命令将启动30个threads并发送50个requests到FeaturedProducts页面。

3.在request仍然被发送的时候,可以在adplus窗口按enter以获取dump文件。

问题1:在-hang参数下,是什么触发dump文件的产生呢?

结果1:这个问题有点隐蔽,dump文件是在你运行adplus的时刻立即产生的,它不同于-crash参数。-crash参数是需要程序满足crash的条件时才会产生dump文件。

(编辑:)

本文标签:
网友评论

栏目列表

推荐文章