c# – PerfView:分析应用程序的性能,包括数据库调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – PerfView:分析应用程序的性能,包括数据库调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1939字,纯文字阅读大概需要3分钟。
内容图文
![c# – PerfView:分析应用程序的性能,包括数据库调用](/upload/InfoBanner/zyjiaocheng/907/57073c6025214d3291aa66613afcedb5.jpg)
我目前正在使用PerfView进行我的(C#)应用程序的性能分析.
但通常这些应用程序使用大量数据库调用.
所以我问自己这样的问题:
– 在存储库中花了多少时间?
– (等待SQL查询返回需要多长时间?) – >我不知道这是否有可能用PerfView发现
但是从我的踪迹中我几乎没有任何有用的结果.在“Any Stacks”视图中,它告诉我(当我在我的存储库中使用分组时)在我的Repsoitory中花费了1.5秒(整个调用大约是45秒).我知道这不是真的,因为存储库调用数据库很多.
是不是在等待SQL查询完成时没有捕获CPU指标,因为CPU在这段时间内无事可做,因此我的时间只包括存储库中的数据转换时间等?
谢谢你的帮助!
编辑:
我错过的是打开线程时间选项以获取被阻止代码的时间(这是我想的数据库调用期间发生的事情).我现在得到了所有的筹码,只是过滤掉了无趣的东西.但我似乎无处可去.
使用“线程时间”时对我来说特别有趣的是BLOCKED_TIME.但随着时间的推移我想起来了.当你看截图时,它告诉我CPU_TIME是28,384.这是毫秒(afaik),但BLOCKED_TIME是2,314,732,不能是毫秒.因此CPU_TIME的百分比非常低,为1.2%,但70秒中的28个仍然很多.所以包容百分比时间是在这里比较苹果和橘子.有人可以解释一下吗?
解决方法:
所以,我成功了.
我错过了(Vance Morrison实际上在他的视频教程中对此进行了解释)是:当使用perfview进行挂钟时间分析时,您将从所有已经“等待”的线程中获得所谓的“BLOCKED_TIME”的累计时间.这意味着70秒的时间,终结者线程为这个“BLOCKED_TIME”增加了70秒,因为它坐在那里没有做任何事情(至少在我的情况下几乎任何事情).
因此,在进行挂钟时间分析时,过滤掉您感兴趣的内容非常重要.例如,搜索占用CPU时间最多的线程,只需在分析中包含此线程,然后再往堆栈中查找你的代码很昂贵(也可能导致数据库或服务调用).一旦你从一个方法的角度进行分析,你真的得到了在这个方法中花费的时间,并且累积的“BLOCK_TIME”就不在了.
我发现最有用的是在我自己的代码中搜索“看起来很耗时”的方法,我切换到此方法的调用者视图.从调用它的位置和调用者的角度来看,是什么导致了进一步向下的消耗时间(存储库或服务中的数据库调用需要获取一些数据).
有点难以解释,但一旦我真正理解了挂钟时间分析的基础知识,那么在某些方面它都是有意义的.
我推荐这个视频教程:http://channel9.msdn.com/Series/PerfView-Tutorial
再次,伟大而强大的工具!
内容总结
以上是互联网集市为您收集整理的c# – PerfView:分析应用程序的性能,包括数据库调用全部内容,希望文章能够帮你解决c# – PerfView:分析应用程序的性能,包括数据库调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。