【性能诊断】一、开篇

在使用.NET进行快速地上手并开发出应用程序后,接下来面临的可能就是系统性能调优方面的问题,尤其是目前的系统大多异常庞大而复杂,性能问题的诊断与调优工作更显得无从下手。一般来说诊断调优工作需要广泛的知识与经验,不单单是代码或SQL的经验,还要对业务逻辑、系统架构设计、应用程序编写、操作系统、网络环境、各种侦测与监控工具、硬件等等,都有基本的了解,才能在复杂的系统中找到症结所在。

记得以前看到过,微软的性能调校文件上标示着各种元素所占的百分比:之前的经验19%、解决问题的能力22%、是否有完备的顾问服务16%、产品的熟悉程度26%、计算机相关知识13%、运气4%,是的,即使你有超强的能力,还有4%的机会是无法控制的。

由于本人做过一段时间专职的诊断优化工作,把性能问题的处理过程与一般的分析方法及工具整理出来,分享给大家,也是抛砖引玉,如有不足之处请大家见谅。

接收到项目现场的性能问题反馈后,我首先会问几个问题,有一个粗略的了解:

  1. 是整体性的问题,还是个别模块、功能出现问题?
  2. 是响应时间长还是不响应(挂起)?
  3. 是所有用户反馈,还是个别用户?当时的在线用户是多少?
  4. 是间歇性的还是持续性的,间歇性的间隔时间是多少?月底/年底?
  5. 从什么时间(或事件)开始?出了什么报表、做了月结、调整了网络、更换了硬件等等

根据现场的反馈,我会使用(或让现场)不同的工具收集性能数据,以下是我的性能问题诊断工具箱:

一般的分析过程:

1、使用fiddler或浏览器自身的开发工具,识别性能瓶颈在客户端还是服务端(或网络)?

2、如果是请求响应时间较长?则从应用服务器或网络方面分析。

3、应用服务器端,主要分析是否有明显的SQL等待、阻塞?识别瓶颈在应用系统还是在数据库服务器?

4、如果是SQL阻塞,则分析DB的性能视图、AWR、DB服务器上的性能计数器等等。

5、如果SQL没有明显的阻塞,使用RedGate分析应用服务器线程或抓取dump使用windbg分析。

6、同时使用APP及DB服务器上的性能计数器,收集CPU、内存、磁盘IO等方面的数据。

7、如果以上都没有明显问题,则考虑网络因素,可以使用网络监测工具进行抓包分析。

后续我会分别就单功能、并发场景、客户端、网络等方面的性能问题进行逐一介绍,也会整理几个典型实战项目的分析过程,喝口水先。

时间: 2024-10-08 23:57:51

【性能诊断】一、开篇的相关文章

Oracle性能优化之性能诊断工具_超越OCP精通Oracle视频教程培训33

Oracle性能优化之性能诊断工具_超越OCP精通Oracle视频教程培训33 课程介绍 Oracle视频教程,风哥本套oracle教程培训<<Oracle数据库性能优化培训教程>>的第3/10套:Oracle性能优化之性能诊断工具.主要学习Oracle性能优化,Oracle自带性能诊断工具介绍,日常维护中的性能工具操作过程,awr性能数据的收集时间,awr自动收集性能报告如何实现,awr手工快照如何实现,awr baseline的手工调整与管理,awr性能相关的视图介绍,awr性

60,000毫秒内对Linux的性能诊断效的方法

转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/168.html?1456484140 60,000 毫秒内对 Linux 的性能诊断 当你为了解决一个性能问题登录到一台 Linux 服务器:在第一分钟你应该检查些什么? 在 Netflix,我们有一个巨大的 EC2 Linux 云,以及大量的性能分析工具来监控和诊断其性能.其中包括用于云监控的 Atlas,以及用于按需实例分析的 Vector.虽然这些工具可以帮助我们解决大多数问题,但

性能诊断与SQL优化

AUTOTRACE 功能辅助SQL优化 安装, 参考PL/SQL环境设置博文 autotrace 常用选项: set autotrace off, 不生成autotrace 报告, 这是缺省值 set autotrace on explain: autotrace 只显示优化器执行路径报告 set autotrace on statistics: 只显示执行统计信息 set autotrace on: 即包含统计信息, 又包含执行计划 set autotrace traceonly: 同set

linux 性能诊断工具命令集

#查看当前系统load uptime #查看系统状态和每个进程的系统资源使用状况 top #可视化显示CPU的使用状况 htop #查看每个CPU的负载信息 mpstat -P ALL 1 #每隔1秒查看磁盘IO的统计信息 iostat -xkdz 1 #每隔一秒查看虚拟内存的使用信息 vmstat 1 #查看内存使用统计信息 free #查看网络使用信息 nicstat -z 1 #类似vmstat的显示优化的工具 dstat 1 #查看系统活动状态,比如系统分页统计,块设备IO统计等 sar

利用Oracle RUEI+EM12c进行应用的“端到端”性能诊断

概述 我们知道,影响一个B/S应用性能的因素,粗略地说,有以下几个大的环节: 1. 客户端环节 2. 网络环节(可能包括WAN和LAN) 3. 应用及中间层环节 4. 数据库层环节 能够对各个环节的问题进行"贯穿"的诊断,才能算是"端到端"的诊断. 能够进行这种类型的诊断的工具很多,我们后面会分别介绍,今天只是给大家看看利用Oracle的工具软件进行从最前端到最后端的应用性能诊断的例子. 涉及的Oracle软件产品有以下几个: RUEI(真是的客户体验洞察) EM1

MySQL性能诊断与调优

[MySQL性能诊断与调优] LAMP 系统性能调优,第 3 部分: MySQL 服务器调优 http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-3.html LoadRunner监控MySQL http://www.docin.com/p-92272846.html Advanced MySQL Performance Optimization http://www.mysqlperformanceblog.com/files/pres

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

visual studio是个强大的集成开发环境,内置了程序性能诊断工具.下面通过两段代码进行介绍. static void Main( string[] args) { Test1(); Test2(); Console.ReadKey(); } protected static void Test1() { Stopwatch sp = new Stopwatch(); sp.Start(); string str = "" ; for (int i = 0; i < 100

60,000毫秒内对Linux进行性能诊断

当你登陆上一个有性能问题的Linux服务器:在第一分钟你会做什么? 在Netflix我们有大规模的EC2 Linux云,也有许多性能分析工具来监控和诊断服务器性能.例如针对云监控的Atlas,针对on-demand机器分析的Vector.这些工具帮助我们解决了大部分问题,但我们偶尔也需要登录服务器,并且运行一些标准的Linux性能工具. 在本文中,Netflix性能工程师团队将介绍,在命令行中,对性能问题分析时所使用的标准Linux工具,前60秒做的事情. 最初60秒:摘要 通过下面10个命令,

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

上一篇我们简单的对客户前端和数据库后端的性能问题进行了定位,如果排除了这两块,问题基本就确定在应用服务器上.但是我们往往对应用服务器,或者说应用程序的性能最陌生,一旦出现性能问题往往有无所适从的感觉,虽然我们的对应用程序的代码最熟悉. 原因有这么几项: 系统庞大.业务复杂时,如果从代码审查入手,主观性因素影响较大:如果在各处代码中增加log统计响应时间,很不方便.也不科学,且工作量很大: 自己维护的代码调用了其他模块的接口,无从下手:与其他模块同事交流时,描述复杂.沟通困难: Oracle环境不