Fiddler

fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据。 使用Fiddler无论对开发还是测试来说,在诊断分析问题时,都有很大的帮助。

下载地址:http://www.telerik.com/download/fiddler

工作原理和使用说明可参考:http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html

当然我们如果仅开发WEB系统,使用浏览器自身的开发者工具也可以看到http的请求响应时间。不再赘述。

SQL Profiler

对于企业应用系统,绝大部分单功能的性能问题出现在数据库的SQL脚本执行上,所以当我们发现fiddler中有响应时间较长的http请求时,往往做的第一件事就是跟踪出该功能执行的SQL,找出响应时间最长的SQL脚本,直接执行该SQL,分析IO、执行计划。一般来说,逻辑IO是SQL性能的主要因素。

如果数据库使用的是sqlserver,这个工作会比较简单,,我们可以使用sqlserver Profiler直接使用缺省设置即可(但sqlserver本身其实很复杂,即使是这简单的Profiler工具,在深入使用的时候也有很大的学问,以后有机会我会再针对sqlserver起一个专题)。

使用Oracle数据库的话,可以借助性能视图找出性能较差的SQL。sqlserver也有大量的动态性能视图,不过sqlserver的图形界面工具做的如此优秀,以至于我们只有在整体性能下降等复杂场景下才使用它。

在此我们仅以Oracle为例,列出常用的一些性能视图的SQL脚本。当然如果我们的业务系统本身提供了获取SQL脚本的功能或机制更好。

--.查找前十条性能差的sql(磁盘读取较大,缺少索引或语句不合理)
SELECT *
FROM (SELECT PARSING_USER_ID EXECUTIONS,
SORTS,
COMMAND_TYPE,
DISK_READS,
sql_text
FROM v$sqlarea
ORDER BY disk_reads DESC)
WHERE ROWNUM < 10; SELECT sql_text, hash_value, executions, buffer_gets, disk_reads, parse_calls
FROM V$SQLAREA
WHERE buffer_gets > 10000000 OR disk_reads > 1000000
ORDER BY buffer_gets + 100 * disk_reads DESC;
-- 最近10分钟最消耗CPU的SQL语句:
select sql_text
from (
select sql_id,count(*) as cn
from v$active_session_history
where sample_time > sysdate - 10/24/60
and session_type <> 'BACKGROUND'
and SESSION_STATE = 'ON CPU'
group by sql_id
order by cn desc
) ash, v$sql s
where ash.sql_id=s.sql_id; -- 最近10分钟最消耗IO的SQL语句:
select sql_text
from (
select sql_id,count(*) as cn
from v$active_session_history
where sample_time > sysdate - 10/24/60
and session_type <> 'BACKGROUND'
and WAIT_CLASS='User I/O'
group by sql_id
order by cn desc
) ash, v$sql s
where ash.sql_id=s.sql_id;

在plsql中查看SQL的执行计划时,我一般增加IO和CPU耗费两项。

在sqlplus等工具中,可以使用如下命令查看执行计划与IO

--
explain plan for
select count(1) from emp a where a.dept_no=5;
select * from table(dbms_xplan.display()); --
set autotrace traceonly exp;

【性能诊断】二、单功能场景的性能分析(fiddler、SQL Profiler)的更多相关文章

  1. 【性能诊断】三、单功能场景的性能分析(RedGate Profiler)

    上一篇我们简单的对客户前端和数据库后端的性能问题进行了定位,如果排除了这两块,问题基本就确定在应用服务器上.但是我们往往对应用服务器,或者说应用程序的性能最陌生,一旦出现性能问题往往有无所适从的感觉, ...

  2. 【性能诊断】四、单功能场景的性能分析(RedGate,找到同一个客户端的并发请求被串行化问题)

    问题描述: 客户端js连续发起两个异步http请求,请求地址相同,但参数不同:POST http://*.*.*.*/*****/webservice/RESTFulWebService/RESTFu ...

  3. 使用vs自带的性能诊断工具

    visual studio是个强大的集成开发环境,内置了程序性能诊断工具.下面通过两段代码进行介绍. static void Main( string[] args) { Test1(); Test2 ...

  4. [C#] 网站程序ASP.NET的性能诊断 - CPU分析

    微软提供了标准的CLR性能分析类库 https://github.com/Microsoft/clrmd 这个类库是开源的代码.能够获取CLR runtime里面几乎所有的信息. 如何获取clrmd编 ...

  5. Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

    概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...

  6. Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和性能分析)

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  7. Oracle ADDM性能诊断利器及报告解读

    性能优化是一个永恒的话题,性能优化也是最具有价值,最值得花费精力深入研究的一个课题,因为资源是有限的,时间是有限的.在Oracle数据库中,随着Oracle功能的不断强大和完善,Oralce数据库在性 ...

  8. Redis(二十一):Redis性能问题排查解决手册(转)

    性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息.通过这些信息来分析文章后面提到的一些性能指标. info命令输出的数 ...

  9. 通过 Javacore 诊断线程挂起等性能问题

    http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1406_tuzy_javacore/1406_tuzy_jav ...

随机推荐

  1. 利用 Postfix 抵擋垃圾信

    reject_unknown_client               //add 20151117

  2. 去掉inline-block元素间隙的几种方法

    <!doctype html><html> <head> <meta charset="UTF-8"> <meta name= ...

  3. Pike的安装(Ubuntu环境)

    本机环境: Ubuntu 14.04 安装:sudo apt-get install pike7.8-dev 或者: sudo apt-get install pike7.8 官网下载源码 获取git ...

  4. Linux--/tmp目录文件重启后自动删除

    源博客 http://blog.itpub.net/24996904/viewspace-769327/ 在/etc/default/目录下有个rcS文件,文件内容如下:## /etc/default ...

  5. PAT (Basic Level) Practise:1013. 数素数

    [题目连接] 令Pi表示第i个素数.现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数. 输入格式: 输入在一行中给出M和N,其间以空格分隔. 输出格式: 输出从PM到 ...

  6. Core Java Volume I — 3.4. Variables

    3.4. VariablesIn Java, every variable has a type. You declare a variable by placing the type first, ...

  7. linux 安装redis

    1:首先命令行下载安装包 wget http://download.redis.io/releases/redis-2.8.13.tar.gz 2:进行解压 tar xzf redis-2.8.13. ...

  8. Codeforces Round #310 (Div. 2) A B C

    A. Case of the Zeros and Ones time limit per test 1 second memory limit per test 256 megabytes input ...

  9. Codeforces Round #313 (Div. 2) A B C 思路 枚举 数学

    A. Currency System in Geraldion time limit per test 2 seconds memory limit per test 256 megabytes in ...

  10. 获取元素高度及定位js

    <script type="text/javascript">                                   $(window).scroll(f ...