【性能诊断】三、单功能场景的性能分析(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 ...
随机推荐
- [转]Golang Gob编码
Golang Gob编码 2012-08-24 09:47 by 轩脉刃, 5119 阅读, 1 评论, 收藏, 编辑 gob是Golang包自带的一个数据结构序列化的编码/解码工具.编码使用Enco ...
- magento搬家步骤和可能遇到的问题
将原来网站文件中的var文件中的cache和session文件删除,将media中的缓存文件删除.然后将所有文件制作成一个压缩包,以减少文件体积,方便转移. 将压缩包转移到新的服务器域名指向的文件夹, ...
- c++ encode decode
std::string UrlEncode(const std::string& szToEncode) { std::string src = szToEncode; char hex[] ...
- win7 通过命令行压缩文件
1,下载winrar这款软件(可能要正式版) 2,安装完之后在c:\programe files里找到winrar目录,复制winrar目录里的winRar.exe文件到c盘下的windows目录 3 ...
- python numpy 的运算
一,基本运算 >>> a = array([1,2,3,4])>>> aarray([1, 2, 3, 4])>>> b=arange(4)> ...
- 解决load 函数无法赋予变量名的问题
以前非常喜欢使用load函数,因为简单,而且存储相对较大的matrix.list文件更为方便.但是load函数有一个问题是在使用其过程中无法对其载入的data赋予变量名: # save data x ...
- hdu 3666 Making the Grade
题目大意 给出了一列数,要求通过修改某些值,使得最终这列数变成有序的序列,非增或者非减的,求最小的修改量. 分析 首先我们会发现,最终修改后,或者和前一个数字一样,或者和后一个数字一样,这样才能修改量 ...
- UI学习笔记---第七天
UIScrollView 滚动视图 UIScrollView的常用属性 iPone屏幕大小限制了内容的显示,UIScrollView 类提供了屏幕滚动功能 UIScrollView是所有滑动视图的 ...
- 软件工程课程作业(一)—20道随机四则运算题(C++)
一.编程思想: 1.定义所需要变量2.设置数组,存储运算符,3.通过随机函数random(0,100)找出运算数,random(0,4)找出运算符4.通过输出显示运算式. 二.源代码: //2016 ...
- Blob 构造函数
Blob 构造函数使 Web 开发人员可直接在客户端上创建或操作 Blob(经常等效于一个文件). 该构造函数在 W3C 的文件 API 规范中进行定义,该规范目前尚处于工作草案阶段.在较早版本的文件 ...