可否请教一个问题,这几天都被这个问题搞疯了。
我的程序修改了一些东西后,打开页面时居然发现aspnet_wp.exe进程占了百分之九十左右的CPU,就我一个人访问,在页面完全打开以后,一直都是这样,在两台电脑上都是这样。不管是IIS还是VS自带的那个服务器,都是这样。
我的程序用了一年都没有碰到过这个问题。这一年来,增加了一些东西,比如缓存管理、日志输出、OLEDB线程池,这三个地方使用了Timer,但经过调试,下了很多断点,好像不是它们的问题。最近为了增加授权功能,使用了很多WMI,还调用了一次Native API来去驱动器序列号,这个的确让程序慢了很多,但是好像也不是它造成了。
后来我用了很多手段,硬是找不到问题所在,请问有什么好方法么?
|
先去掉所有的调用,证实页面运行没问题再逐步将调用往上加,每步进行确认,应该可以找到出问题的地方. 可以配合单元测试. 页面的Trace输出(这个可以看到执行步骤的花费时间). Good luck~~~ 确实可以利用Trace 但如果使用WinDbg来排错,更加有效点。 记得哪里有个性能分析来的, 可以细化到一个方法(过程)执行了多少次,占用多少CPU等 菜鸟的选择:dotTrace vs2005/2008有诊断性能的工具,类似于QATime,能看到call tree,还有资源占用什么的。 再不行就抓档,用windbg分析 wmi最好少用,确实很慢 |
|
6个月前 大石头 : 大家说的方法我都试过了。 那是我做的一个组件,就写一个简简单单的网页调用这个组件,网页加载完成,过了一会之后,ASPNet_wp进程就开始吃CPU,然后它照样可以处理各种页面请求,除了慢一点之外没有什么影响。我用过dotTrace了,根本找不到,就算我等上半个小时,dotTrace中也找不到这半个小时的时间,就只有几分钟而已。 我像用windbg,进入那个占用CPU高的线程之后,也看不到调用堆栈。 恳求各位高手指教!如果有可行的方法,即使使用win32汇编调试我也愿意。 |
|
6个月前 大石头 : 我再次说明一下,页面正常执行,只是慢一点点,而不是很多人所认为的页面处理过程中占CPU。 |
|
6个月前 烟头上的探戈 : web.config debug=false |