当前位置:主页 > 行业知识 >

ASP.NET Debug系列之二 Hang调试

发布时间:19-12-06 阅读:213

前几天我翻译了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文件。



上一篇:陈坤成了邻居称兄道妹是什么意思?陈坤和倪妮
下一篇:港府40亿纾困 帮补商户水电费差饷