性能分析与调优的原理及原则_第1页
性能分析与调优的原理及原则_第2页
性能分析与调优的原理及原则_第3页
性能分析与调优的原理及原则_第4页
性能分析与调优的原理及原则_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、性能分析与调优的原理最近一直纠结性能分析与调优如何下手,先从硬件开始,还是先从代码或数据库。从操作系统(CPU调度,内存管理,进程调度,磁盘I/O)、网络、协议(HTTP,TCP/IP),还是从应用程序代码,数据库调优,中间件配置等方面入手。单一个中间件又分web中间件(apache、IIS),应用中间件(tomcat、weblogic、webSphere)等,虽然都是中间件,每一样拎出来往深了学都不是一朝一夕之功。但调优对于每一项的要求又不仅仅是“知道”或“会使用”这么简单。起码要达到“如何更好的使用”。常看到性能测试书中说,性能测试不单单是性能测试工程师一个人的事儿。需要DBA、开发人员、

2、运维人员的配合完成。但是在不少情况下性能测试是由性能测试人员独立完成的,退一步就算由其它人员的协助,了解系统架构的各个模块对于自身的提高也有很大帮助,同进也更能得到别人的尊重。再说性能调优之前,我们有必要再提一下进行测试的目的,或者我们进行性能测试的初衷是什么?能力验证:验证某系统在一定条件具有什么样的能力。能力规划:如何使系统达到我们要求的性能能力。应用程序诊断:比如内存泄漏,通过功能测试很难发现,但通过性能测试却很容易发现。性能调优:满足用户需求,进一步进行系统分析找出瓶颈,优化瓶颈,提高系统整体性能。性能测试调优需要先发现瓶颈,那么系统一般会存在哪些瓶颈:1、硬件上的性能瓶颈:一般指的是

3、CPU、内存、磁盘I/O方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数配置、数据库、web服务器等)、应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)。2、应用软件上的性能瓶颈:一般指的是应用服务器、web服务器等应用软件,还包括数据库系统。例如:中间件weblogic平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈。3、应用程序上的性能瓶颈:一般指的是开发人员新开发出来的应用程序。例如,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够),造成系统在大量用户方位时性能低下而造成的瓶颈。4、操作系统上

4、的性能瓶颈:一般指的是windows、UNIX、Linux等操作系统。例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系统上出现性能瓶颈。5、网络设备上的性能瓶颈:一般指的是防火墙、动态负载均衡器、交换机等设备。例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时可以认为网络瓶颈。性能测试出现的原因及其定位十分复杂,这里只是简单介绍常见的几种瓶

5、颈类型和特征,而性能测试所需要做的就是根据各种情况因素综合考虑,然后协助开发人员/DBA/运维人员一起定位性能瓶颈。二、一般性能调优步骤一般性能问题调优的步骤:1、步骤一:确定问题应用程序代码:在通常情况下,很多程序的性能问题都是写出来的,因此对于发现瓶颈的模块,应该首先检查一下代码。数据库配置:经常引起整个系统运行缓慢,一些诸如oracle的大型数据库都是需要DBA进行正确的参数调整才能投产的。操作系统配置:不合理就可能引起系统瓶颈。硬件设置:硬盘速度、内存大小等都是容易引起瓶颈的原因,因此这些都是分析的重点。网络:网络负载过重导致网络冲突和网络延迟。2、步骤二:分析问题当确定了问题之后,我

6、们要明确这个问题影响的是响应时间吞吐量,还是其他问题?是多数用户还是少数用户遇到了问题?如果是少数用户,这几个用户与其它用户的操作有什么不用?系统资源监控的结果是否正常?CPU的使用是否到达极限?I/O情况如何?问题是否集中在某一类模块中?是客户端还是服务器出现问题?系统硬件配置是否够用?实际负载是否超过了系统的负载能力?是否未对系统进行优化?通过这些分析及一些与系统相关的问题,可以对系统瓶颈有更深入的了解,进而分析出真正的原因。3、步骤三:确定调整目标和解决方案提高系统吞吐量,缩短响应时间,更好地支持并发。4、步骤四:测试解决方案对通过解决方案调优后的系统进行基准测试。(基准测试是指通过设计

7、科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试)5、步骤五:分析调优结果系统调优是否达到或者超出了预定目标?系统是整体性能得到了改善,还是以系统某部分性能来解决其他问题。调优是否可以结束了。最后,如果达到了预期目标,调优工作就基本可以结束了。下面算是一个技巧,如面试官问到一个性能问题假设,我不知道性能问题出在哪儿时,可以按照这个思路回答A_A?查找瓶颈时按以下顺序,由易到难。服务器硬件瓶颈->网络瓶颈(对局域网,可以不考虑)-服务器操作系统瓶颈(参数配置)->中间件瓶颈(参数配置,数据库,web服务器等)->应用瓶颈(SQL语句、

8、数据库设计、业务逻辑、算法等)注:以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。性能测试调优应该注意的要点: 要点1:在应用系统的设计开发过程中,应始终把性能放在考虑的范围内。 要点2:确定清晰明确的性能目标是关键。 要点3:必须保证调优后的程序运行正确。 要点4:系统的性能更大程度上取决于良好的设计,调优技巧只是一个辅助手段。 要点5:调优过程是迭代渐进的过程,每一次调优的结果都要反馈到后续的代码开发中去。 要点6:性能调优不能以牺牲代码的可读性和可维护性为代码

9、。三、性能排查分析原则?分段排除法很有效分析的信息来源:1)根据场景运行过程中的错误提示信息2)根据测试结果收集到的监控指标数据(一)错误提示分析分析实例:1) Error:Failedtoconnecttoserver“::10060ConnectionError:timedoutError:Server""hasshutdowntheconnectionprematurely分析:A、应用服务死掉。(小用户时:程序上的问题。程序上处理数据库的问题)B、应用服务没有死(应用服务参数设置问题)例:在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则

10、有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connectionrefused消息,说明应提高该值,每次增加25%C、数据库的连接(1、在应用服务的性能参数可能太小了2、数据库启动的最大连接数(跟硬件的内存有关)2) Error:Pagedownloadtimeout(120seconds)hasexpired分析:可能是以下原因造成A、应用服务参数设置太大导致服务器的瓶颈B、页面中图片太多C、在程序处理表的时候检查字段太大多(二)监控指标数据分析1 .最大并发用户数:应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置)下能承受

11、的最大并发用户数。在方案运行中,如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数。如果测得的最大并发用户数到达了性能要求,且各服务器资源情况良好,业务操作响应时间也达到了用户要求,那么OK。否则,再根据各服务器的资源情况和业务操作响应时间进一步分析原因所在。2 .业务操作响应时间:分析方案运行情况应从平均事务响应时间图和事务性能摘要图开始。使用事务性能摘要”图,可以确定在方案执行期间响应时间过长的事务。细分事务并分析每个页面组件的性能。查看过长的事务响应时

12、间是由哪些页面组件引起的?问题是否与网络或服务器有关?如果服务器耗时过长,请使用相应的服务器图确定有问题的服务器度量并查明服务器性能下降的原因。如果网络耗时过长,请使用网络监视器”图确定导致性能瓶颈的网络问题2-5-10原则:简单说,就是当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-10秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过10秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择离开这个Web站点,或者发起第二次请求3 .服务器资源监控指标:内存:1) UN

13、IX资源监控中指标内存页交换速率(Pagingrate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。2) Windows资源监控中,如果ProcessPrivateBytes计数器和ProcessWorkingSet计数器的值在长时间内持续升高,同时MemoryAvailablebytes计数器的值持续降低,则很可能存在内存泄漏。内存资源成为系统性能的瓶颈的征兆:很高的换页率(highpageoutrate);进程进入不活动状态;交换区所有磁盘的活动次数可高;可高的全局系统CPU利用率;内存不够出错(outofmemoryerrors)

14、处理器:1)UNIX资源监控(Windows操作系统同理)中指标CPU占用率(CPUutilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。如果服务器专用于SQLServer,可接受的最大上限是80-85%合理使用的范围在60%至70%。3) Windows资源监控中,如果SystemProcessorQueueLength大于2,而处理器利用率(ProcessorTime)一直很低,则存在着处理器阻塞。CPU资源成为系统性能的瓶颈的征兆:很慢的响应时间(slowresponsetime)CPU空闲时间为零(zeropercentidle

15、CPU)过高的用户占用CPU时间(highpercentuserCPU)过高的系统占用CPU时间(highpercentsystemCPU)长时间的有很长的运行进程队歹U(largerunqueuesizesustainedovertime)磁盘I/O:1) UNIX资源监控(Windows操作系统同理)中指标磁盘交换率(Diskrate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。2) Windows资源监控中,如果DiskTime和Avg.DiskQueueLength的值很高,而PageReads/sec页面读取操作速率很低,则可能存在磁盘瓶径。I/O资源成为系统

16、性能的瓶颈的征兆:过高的磁盘利用率(highdiskutilization)太长的磁盘等待队列(largediskqueuelength)等待磁盘I/O的时间所占的百分率太高(largepercentageoftimewaitingfordiskI/O)太高的物理I/O速率:largephysicalI/Orate(notsufficientinitself)过低的缓存命中率(lowbuffercachehitratio(notsufficientinitself)太长的运行进程队列,但CPU却空闲(largerunqueuewithidleCPU)4.数据库服务器:SQLServer数据库:

17、1) SQLServer资源监控中指标缓存点击率(CacheHitRatio),该值越高越好。如果持续低于80%,应考虑增加内存。2)如果FullScans/sec(全表扫描/秒)计数器显示的值比1或2高,则应分析你的查询以确定是否确实需要全表扫描,以及SQL查询是否可以被优化。3) NumberofDeadlocks/sec(死锁的数量/秒):死锁对应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器的值必须为0。4) LockRequests/sec(锁请求/秒),通过优化查询来减少读取次数,可以减少该计数器的值。Oracle数据库:1)如果自由内存接近于0而且库快存或数据字典快

18、存的命中率小于0.90,那么需要增力口SHARED_POOL_SIZE的大/卜。2)如果数据的缓存命中率/、于0.90,那么需要力口大DB_BLOCK_BUFFERS参数的值(单位:块)。3)如果日志缓冲区申请的值较大,则应加大LOG_BUFFER参数的值。4)如果内存排序命中率小于0.95,则应加大SORT_AREA_SIZE以避免磁盘排序(Oracle数据库:1)如果自由内存接近于0而且库快存或数据字典快存的命中率小于0.90,那么需要增力口SHARED_POOL_SIZE的大/卜。2)如果数据的缓存命中率/、于0.90,那么需要力口大DB_BLOCK_BUFFERS参数的值(单位:块)。3)如果日志缓冲区申请的值较大,则应加大LOG_BUFF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论