【性能诊断】三、单功能场景的性能分析(RedGate Profiler)
上一篇我们简单的对客户前端和数据库后端的性能问题进行了定位,如果排除了这两块,问题基本就确定在应用服务器上。但是我们往往对应用服务器,或者说应用程序的性能最陌生,一旦出现性能问题往往有无所适从的感觉,虽然我们的对应用程序的代码最熟悉。
原因有这么几项:
- 系统庞大、业务复杂时,如果从代码审查入手,主观性因素影响较大;如果在各处代码中增加log统计响应时间,很不方便、也不科学,且工作量很大;
- 自己维护的代码调用了其他模块的接口,无从下手;与其他模块同事交流时,描述复杂、沟通困难;
- Oracle环境不方便跟踪SQL脚本的执行记录,Sqlserver虽然能够做到到,但跟踪到其他模块的SQL也不知道是哪个方法调用的;
基于这些原因,另一个强大的工具诞生了---ANTS RedGate Performance Profiler
下载地址:http://www.red-gate.com/products/
RedGate与VS自带的分析工具对比
Visual Studio Performance Profiler
Visual Studio 分析工具的采样分析方法按设置的时间间隔中断计算机处理器并收集函数调用堆栈。
1.专用术语太多,分析报告不易理解
2.操作复杂、与VS集成
3.不能将SQL执行、文件操作同步抓取分析
RedGate Performance/Memory Profiler
RedGate基本工作原理是在.NET编译出的IL代码里放入钩子用来记录时间,然后通过直观的界面显示出哪部分代码耗能最大。
1.可视化界面、操作简洁,直观的展现系统的性能响应与内存分配情况;
2.能够捕捉到SQL脚本与执行时间,SQL与.NET代码关联切换;
3.可以针对指定线程进行特定分析,便于快速定位问题;
使用示例
启动Performance,注意再测试时使用新的Profile端口。
使用鼠标选中指定时间区间后,redgate自动会进行分析,缺省我们看到的是Call Tree视图,此处我们注意三点:
- Call Tree显示该时间段内进程的线程调用堆栈和对应的CPU消耗及方法调用次数;可以推测出循环、递归等代码;
- 此时我们看到的是CPU执行时间占比(或执行时间),不包含SQL执行、网络、文件等IO阻塞的等待时间;
- 如果是debug的dll又有对应的pdb文件,选中指定方法,可以直接查看到源代码;
切换到Method grid, 按照方法执行的总时间倒序,不考虑调用关系;利用隐藏指定命名空间(或仅显示指定命名空间),可以方便查找并突出问题;
Database calls视图 展示所有的数据库SQL访问,缺省按执行时间倒序,SQL脚本后面有.NET图标,可以快速定位到该SQL的程序调用堆栈;Call tree中的SQL脚本图标,同样可以快速返回到Database calls界面;
另外,为选中区域命名,方便后期分析,提高工作效率;当后台处理较复杂,如使用了多线程,或者一个功能对应很多http请求时,可以按指定线程分析问题;
介绍类的内容就不做过多的介绍了,下一篇会以一个例子,使用redgate诊断一个刚接触貌似很诡异问题。
【性能诊断】三、单功能场景的性能分析(RedGate Profiler)的更多相关文章
- 【性能诊断】二、单功能场景的性能分析(fiddler、SQL Profiler)
Fiddler fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测 ...
- 【性能诊断】四、单功能场景的性能分析(RedGate,找到同一个客户端的并发请求被串行化问题)
问题描述: 客户端js连续发起两个异步http请求,请求地址相同,但参数不同:POST http://*.*.*.*/*****/webservice/RESTFulWebService/RESTFu ...
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...
- Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和性能分析)
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- c#之冒泡排序的三种实现和性能分析
冒泡排序算法是我们经常见到的尤其是子一些笔试题中. 下面和大家讨论c#中的冒泡排序,笔者提供了三种解决方案,并且会分析各自的性能优劣. 第一种估计大家都掌握的,使用数据交换来实现,这种就不多说了,园子 ...
- [C#] 网站程序ASP.NET的性能诊断 - CPU分析
微软提供了标准的CLR性能分析类库 https://github.com/Microsoft/clrmd 这个类库是开源的代码.能够获取CLR runtime里面几乎所有的信息. 如何获取clrmd编 ...
- 通过 Javacore 诊断线程挂起等性能问题
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1406_tuzy_javacore/1406_tuzy_jav ...
- [翻译]60,000毫秒内对Linux进行性能诊断
原文链接:http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html 原文作者:Brendan Gregg,L ...
- (转)通过 Javacore 诊断线程挂起等性能问题
原文:https://www.ibm.com/developerworks/cn/websphere/library/techarticles/1406_tuzy_javacore/1406_tuzy ...
随机推荐
- 第一次进div1了
第一次进div1~好激动啊! 上帝依旧那么眷顾我!
- 【转】Entity Systems
“Favour composition over inheritance” If you haven’t already read my previous post on the problems o ...
- MySQL数据库备份和还原的常用命令小结
备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库 ...
- Oracle PL/SQL高级应用 视图 同义词 序列
视图: 视图叫虚表,即是在哪个表上建立的视图,将那个表的数据用一条查询sql语句查出的数据展现在该视图中,对这个视图操作就是只能对该视图中的数据进行操作,该操作也会保存在建立的表中.可以理解为表上表, ...
- 《JS高程》JS-Object对象整理
继上篇<JS高程>对象&原型笔记,对JavaScript中的Object对象进行了整理,梳理一遍~ 参考文章:详解Javascript中的Object对象 ------------ ...
- 文件系统层次标准FHS的详细介绍
Filesystem Hierarchy Standard (文件系统层次标准,FHS)标准依据文件系统使用的频繁与否与是否允讲使用者随意更动, 而将目录定义成四种交互作用的形态,具体如下: 可分享的 ...
- Spring-IOC之前世今生
没使用IOC之前 贯用工厂模式调用 bean组件 可类比为: 去商场买东西,你是先想好自己要买什么了,然后去寻找商品(逛商场的同学不要扯皮啊2333) 用了IOC之后 可类比为: 所有网上购物,所有的 ...
- ZOJ 1005 Jugs
原题链接 题目大意:有一大一小两个杯子,相互倒水,直到其中一个杯子里剩下特定体积的水.描述这个过程. 解法:因为两个杯子的容积互质,所以只要用小杯子不断往大杯子倒水,大杯子灌满后就清空,大杯子里迟早会 ...
- leetcode之链表排序题
原文链接:点击打开链接 原题是这样的: Given a linked list and a value x, partition it such that all nodes less than x ...
- smartUpload组件批量下载
public class BatchDownloadServlet extends HttpServlet { public void doGet(HttpServletRequest request ...