浏览:9282007-12-29 20:21   来自大石头      :

可否请教一个问题,这几天都被这个问题搞疯了。

我的程序修改了一些东西后,打开页面时居然发现aspnet_wp.exe进程占了百分之九十左右的CPU,在页面完全打开以后,一直都是这样,在两台电脑上都是这样。不管是IIS还是VS自带的那个服务器,都是这样。

我的程序用了一年都没有碰到过这个问题。这一年来,增加了一些东西,比如缓存管理、日志输出、OLEDB线程池,这三个地方使用了Timer,但经过调试,好像不是它们的问题。最近为了增加授权功能,使用了很多WMI,还调用了一次Native API来去驱动器序列号,这个的确让程序慢了很多,但是好像也不是它造成了。

后来我用了很多手段,硬是找不到问题所在,请问有什么好方法么?

楼主
  4个月前   lbq1221119      :
这个问题有几个解决方案,一个是在perfom里面添加相关的性能监测点,针对特定的类型。
另外就是抓dump使用sos调试,查看各个线程的调用情况和资源占用情况。第二种方法最直接最好,不过技术含量挺高的,你要会的东西很多
回复  1楼 回到顶楼 
  4个月前   鞠强      :
用!threadpool和!runaway基本能找出来
回复  2楼 回到顶楼 
  4个月前   大石头      :
刚从博客园那边过来,晕倒,才发现我原来已经是这个小组的一员了。。。

谢谢楼上的这么多位。

你们提到的方法,我全部试过了,.net的各种debug指令,几乎也全部试过了(我有一份完整的chm手册),结果就是一切都正常。真是没办法。

的确有一个线程占了很大CPU,只是它的堆栈太正常了……

同时因为这个是偶然发生的,根本不知道如何去解决。

◎ lbq1221119
怎么家性能监测点?代码很多,并且是偶然发生,难呀,就怕加上监测点后,就再也碰不到这个情况了。
回复  3楼 回到顶楼 
  4个月前   lbq1221119      :
用!threadpool和!runaway基本能找出来
en 你看看他的sos的参考手册,这两个指令的使用

你抓一个dump发上来看看啊
回复  4楼 回到顶楼 
  4个月前   大石头      :
第一个是看线程池,第二个是看哪个线程占用最多CPU时间,不用翻手册都记得他们的用途啦。

我一向是直接附加到IIS进程分析的,所以没有抓dump,下次抓一个,大家帮看看。

谢谢^_^
回复  5楼 回到顶楼 
  4个月前   孤剑      :
看看是不是多线程的问题,在 timer 中用到 thread 就出现了。最近找到了一个这样问题
回复  6楼 回到顶楼 
  1个月前   大石头      :
这是莫名其妙呀,近两个月都没有发现了
回复  7楼 回到顶楼 

你还不是小组成员,加入小组以后才能发布新主题!
1 19592