【性能诊断】三、单功能场景的性能分析(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 ...
随机推荐
- PHP CI框架email类发送邮件
用CI框架发送邮件类 在中文标题太长的情况下会出现乱码,搜索后说是发送邮件的时候有标题长度的限制,按说的方法修改后,还是没能得到解决,后来发现需要转换邮件标题的编码,解决方法如下: 打开 librar ...
- LeetCode Permutations II (全排列)
题意: 给出n个元素(可能有重复的),请产生出所有的全排列. 思路: 同版本1的有点不同,这次有可能含有重复的元素,很容易就TLE,节省时间才是关键点. 如果将一个序列中两个相同的元素交换,这个序列是 ...
- 传智springMVC笔记
springmvc 第一天 springmvc的基础知识 课程安排: 第一天:springmvc的基础知识 什么是springmvc? springmvc框架原理(掌握) 前端控制器.处理器映射器.处 ...
- Redis 3.0 集群搭建
Redis 3.0 集群搭建 开启两个虚拟机 分别在两个虚拟机上开启3个Redis实例 3主3从两个虚拟机里的实例互为主备 下面分别在两个虚拟机上安装,网络设置参照codis集群的前两个主机 分别关闭 ...
- js实现简单易用的上下无缝滚动效果
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- C# DataSet取值
1.读取dataset中某表某行某列的值: dataset.Tables[].Rows[].ItemArray[].ToString()dataset.Tables[0].Rows[0][0]; 该示 ...
- UI学习笔记---第三天
视图控制器 功能:视图大小变换 \布局视图\响应事件\检测处理内存警告\检测以及处理屏幕旋转\检测视图切换 MVC (model View controller) UIViewController是M ...
- eclipse项目导入到android studio
只需要添加gradle文件,在里面添加如下代码片段------------------------------------------- main { manifest.srcFile 'Androi ...
- UDP通讯程序设计---6
一.函数化 1.1服务器使用的函数 创建socket----->socket 绑定地址-------->bind 接受数据-------->recvfrom 发送数据-------- ...
- HDU 2085 核反应堆 --- 简单递推
HDU 2085 核反应堆 /* HDU 2085 核反应堆 --- 简单递推 */ #include <cstdio> ; long long a[N], b[N]; //a表示高能质点 ...