LR性能测试中如何定位性能瓶颈
- 格式:docx
- 大小:19.39 KB
- 文档页数:9
第一步:从分析Summary的事务执行情况入手Summary主要是判定事务的响应时间与执行情况是否合理。
如果发现问题,则需要做进一步分析。
通常情况下,如果事务执行情况失败或响应时间过长等,都需要做深入分析。
下面是查看分析概要时的一些原则:(1):用户是否全部运行,最大运行并发用户数(Maximum RunningVusers)是否与场景设计的最大运行并发用户数一致。
如果没有,则需要打开与虚拟用户相关的分析图,进一步分析虚拟用户不能正常运行的详细原因;(2):事务的平均响应时间、90%事务最大响应时间用户是否可以接受。
如果事务响应时间过长,则要打开与事务相关的各类分析图,深入地分析事务的执行情况;(3):查看事务是否全部通过。
如果有事务失败,则需要深入分析原因。
很多时候,事务不能正常执行意味着系统出现了瓶颈;(4):如果一切正常,则本次测试没有必要进行深入分析,可以进行加大压力测试;(5):如果事务失败过多,则应该降低压力继续进行测试,使结果分析更容易进行;......上面这些原则都是分析Summary的一些常见方法,大家应该灵活使用并不断地进行总结与完善,尤其要主要结合实际情况,不能墨守成规。
第二步:查看负载生成器和服务器的系统资源情况。
查看分析概要后,接下来要查看负载生成器何待测服务器的系统资源使用情况:查看CPU的利用率何内存使用情况,尤其要注意查看是否存在内存泄露问题。
这样做是由于很多时候系统出现瓶颈的直接表现是CPU利用率过高或内存不足。
应高保证负载生成器在整个测试过程中其CPU、内存、带宽没有出现瓶颈,否则测试结果无效。
而待测试服务器,则重点分析测试过程中CPU何内存是否出现了瓶颈:CPU需要查看其利用率是否经常达到100%或平均利用率一直高居95%以上;内存需要查看是否够用以及测试过程是否存在溢出现象(对于一些中间件服务器要查看其分配的内存是否够用)。
第三步:查看虚拟用户与事务的详细执行情况。
对于确定是否存在性能瓶颈,首先判断是否存在硬件(包括网络)瓶颈问题,若不存在硬件瓶颈问题,则按照应用软件到系统软件(应用服务器、数据库服务器、操作系统)的顺序进行分析,确定瓶颈点.一、硬件瓶颈分析方法1.内存分析方法(1)首先查看可用内存(Memory\Available Mbytes)计数器指标。
若值较小则可能有内存问题,需进一步分析。
(2)注意Pages/sec、Pages Read/sec和Page Faults/sec计数器的值。
Pages/sec和Page Faults/sec的值持续很高,很可能内存问题,若Pages Read/sec的值超过5,则可判断存在内存问题。
(3)根据Physical Disk计数器的值分析性能瓶颈。
如果磁盘的Average Disk Queue Length计数器增加的同时Pages Read/sec 并未降低,则可判断内存有问题。
2.处理器分析方法(1)首先查看System\%Total Processor Time计数器的值。
该值体现的是CPU的平均利用率,若超过90%,则说明存在处理器方面的瓶颈。
(2)其次查看每个CPU的Processor\%User Time计数器的值。
若应用服务器的%User Time值较大,可以考虑是否能通过算法优化等方法降低这个值。
若数据库服务器的%User Time值较大,可考虑对数据库系统进行优化。
(3)查看System\Processor Queue Length计数器的值。
当该值大于CPU数量的总数+1时,说明存在处理器方面的问题。
3.磁盘I/O分析方法(1)查看%Disk Time计数器的值。
该值较大,则可能存在磁盘瓶颈问题。
(2)与Processor\Privileged Time合并进行分析。
若%DiskTime值较大,而Processor\Privileged Time的值适中,则可判断存在磁盘问题。
若Processor\Privileged Time较大,持续超过80%,则可能是内存泄漏。
软件性能测试数据分析方法与性能瓶颈定位软件性能测试是软件开发生命周期中非常重要的一个环节,它可以帮助开发团队评估系统在不同负载情况下的性能表现,并且找出潜在的性能瓶颈问题。
在进行软件性能测试过程中,对测试数据进行分析和性能瓶颈的定位变得至关重要。
本文将介绍几种常用的软件性能测试数据分析方法,并讨论如何定位性能瓶颈问题。
一、软件性能测试数据分析方法1. 基准测试分析:基准测试是一种以确定性能度量方面的基准值为目标的性能测试。
在进行基准测试后,应该对所得数据进行分析,以便评估系统在不同负载情况下的性能表现。
常用的基准测试分析方法包括:平均响应时间分析、标准差分析、吞吐量分析等。
通过对这些数据进行分析,可以帮助确定系统性能状况。
2. 载荷测试分析:载荷测试是指对系统进行压力测试,以评估系统在高负载情况下的性能表现。
在进行载荷测试后,需要对测试数据进行分析,查看系统在不同负载级别下的性能指标变化。
常用的载荷测试分析方法包括:并发用户数分析、吞吐量分析、错误率分析等。
通过这些分析方法,可以帮助找出系统在高负载下出现的性能问题。
3. 性能指标分析:在软件性能测试中,一些基本的性能指标,如响应时间、吞吐量等,对于评估系统性能非常重要。
通过对这些性能指标的分析,可以帮助发现系统性能的瓶颈,进而进行优化。
常用的性能指标分析方法包括:分位数分析、负载分析、资源利用率分析等。
二、性能瓶颈的定位软件系统的性能瓶颈是指导致系统性能下降的原因。
在软件性能测试过程中,定位性能瓶颈是非常重要的,只有明确了性能瓶颈的位置,才能针对性地进行性能优化。
以下是一些常用的性能瓶颈定位方法:1. 基于响应时间的定位:响应时间是用户感知软件性能的重要指标之一。
通过对系统的响应时间进行分析,可以定位到导致响应时间延长的关键路径。
这些关键路径可能是数据库查询、网络传输、计算等方面的问题,通过优化这些关键路径可以提高系统的性能。
2. 基于资源利用率的定位:在进行性能测试时,要监控系统资源的利用率,包括CPU利用率、内存利用率、磁盘IO等。
性能测试中如何定位性能瓶颈?地址:2011-4-15 来源:网络性能测试的概念是什么,基本目的是什么,我想大家都基本清楚,不作详述,总之,性能测试只是测试过程中的一种方式,帮助我们的功能更好的运行,如果功能测试是可用,易用,满足需求、用户使用为目的,性能测试无非就是让这些目的更流畅。
没有什么专业的概念,无非实现两个字:好用!所以,性能测试这种测试方式在发生过程中,其中一个过渡性的工作,就是对执行过程中的问题,进行定位,对功能的定位,对负载的定位,最重要的,当然就是问题中说的“瓶颈”,接触性能测试不深,更非专家,自己的理解,瓶颈产生在以下几方面:•1、网络瓶颈,如带宽,流量等形成的网络环境•2、应用服务瓶颈,如中间件的基本配置,CACHE等•3、系统瓶颈,这个比较常用:应用服务器,数据库服务器以及客户机的CPU,内存,硬盘等配置•4、数据库瓶颈,以ORACLE为例,SYS中默认的一些参数设置•5、应用程序本身瓶颈,针对网络瓶颈,现在冒似很少,不过也不是没有,首先想一下如果有网络的阻塞,断网,带宽被其他资源占用,限速等情况,应用程序或系统会是什么情况,针对WEB,无非是超时,HTTP400,500之类的错,针对一些客户端程序,可能也是超时,掉线,服务器下发的,需要服务器返回的信息获取不到还有一种更明显的情况,应该就是事务提交慢,如果封装事务的代码再不完善,一般造成的错误,无非就是数据提交不完整,或者因为网终原因+代码缺陷造成重复性提交。
如此综合下来,肯定是考虑网络有瓶颈,然后考虑网络有问题时,怎样去优化,是需要优化交互的一些代码,还是接口之类的。
应用服务的瓶颈的定位,比较复杂,学习中,不过网上有很多资料可以参考的。
一般像tomcat,weblogic 之类的,有默认的设置,也有经过架构和维护人员进行试验调试的一些值,这些值一般可以满足程序发布的需要,不必进行太多的设置,可能我们认识的最基本的就是JAVA_OPTS的设置,maxThreads,time_out之类的参数我们做借助LR,Jemeter或webload之类的工具,执行性能测试,尤其是对应用服务造成了压力,如果应用服务有瓶颈,一般我们设置的,日志都会记录下来。
性能测试如何定位瓶颈?看高手如何快速排查问题当线上碰到头疼的问题时,还在对着代码一行行的看?真的不太时髦了啊喂~俗话说的好“问题排查不用愁,Arthas 来帮您忙。
”今天就来说说这个让妈妈再也不用担心我排查问题的 Java 诊断神器——Arthas!什么是Arthas?Arthas?是一款开源在线诊断工具,采用命令行交互模式,支持 web 端在线诊断,同时提供丰富的Tab 自动补全功能,进一步方便进行问题的定位和诊断。
这是一款开源一年多GitHub star 2 万,99% 的阿里研发小哥都在用的Java 终极诊断利器!相对比直接下载使用,我推荐开发者可以试一下通过IDE插件Cloud Toolkit 中使用Arthas 来实现一键远程诊断功能。
得益于Arthas 强大且丰富的功能,让Arthas 能做的事情超乎想象。
下面仅仅列举几项常见的使用情况,更多的使用场景可以在熟悉了Arthas 之后自行探索。
是否有一个全局视角来查看系统的运行状况?为什么CPU 又升高了,到底是哪里占用了CPU ?运行的多线程有死锁吗?有阻塞吗?程序运行耗时很长,是哪里耗时比较长呢?如何监测呢?这个类从哪个jar 包加载的?为什么会报各种类相关的Exception?我改的代码为什么没有执行到?难道是我没commit?分支搞错了?遇到问题无法在线上debug,难道只能通过加日志再重新发布吗?有什么办法可以监控到JVM 的实时运行状态?Arthas 的命令、功能在其官方文档有详细介绍,下文将介绍一下近期几个使用场景。
场景1:定位压测时的性能瓶颈平时服务器请求都很正常。
压测时,依赖的服务、数据库也都没有到达瓶颈,但是机器的CPU 全部飘红,why?通过jstack 命令,只能看到某一时刻的堆栈,没有抓到真凶。
thread 查看当前线程信息,查看线程的堆栈。
thread -n 3 -i 10000 可以统计10 秒内最忙的3 个线程,并且打印它们的堆栈,很容易发现问题。
判断CPU瓶颈1,%processor time 平均值大于952,processor queue length大于2 (大于处理器个数+1).可以确定CPU瓶颈3,CPU空闲时间为零(zero percent idle CPU)4,过高的用户占用CPU时间(%User Time)5, 过高的系统占用CPU时间(%Priviliaged Time:长期大于90%或者95%)备注:%User time(processor_total)表示耗费CPU的数据库操作,如排序,执行aggregate functions等。
如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值如果发现processor queue length显示的队列长度超过2,而处理器的利用率却一直很低,或许更应该去解决处理器阻塞问题,这里处理器一般不是瓶颈。
判断内存瓶颈与内存泄漏1,如果发生了内存泄漏,process\private bytes计数器和process\working set计数器的值往往会升高,同时avaiable bytes的值会降低。
2,如果Available Mbytes(剩余物理内存数)的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。
定位磁盘瓶颈1,% Disk Time和Avg.Disk Queue Length的值(应不大于组成物理磁盘的主轴数的1.5 到2倍) 很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。
2,Physical Disk\ Disk Reads/sec and Disk Writes/sec大于20 ms,则有可能磁盘瓶颈3,Avg.Disk sec/Transfer盘中写入数据的平均时间,单位是秒,一般来说,定义该值小于15ms最为优异,介于15-30ms之间为良好,30-60ms之间为可以接受,超过60ms则需要考虑更换硬盘或硬盘的RAID方式了4,Disk Transfers/sec指在此盘上读取/写入操作速率。
如何进行性能测试找出瓶颈并优化性能测试是软件开发过程中至关重要的一环,它可以帮助开发团队找出系统中的瓶颈并进行优化。
本文将介绍如何进行性能测试,找出瓶颈并进行优化的步骤和方法。
一、性能测试简介性能测试是一种对软件、系统或者组件的性能进行评估和验证的过程。
它可以帮助开发团队确定系统的响应时间、吞吐量、并发用户数等性能指标,以找出系统的瓶颈并进行优化。
二、性能测试的步骤1. 确定性能测试的目标在开始性能测试之前,需要明确性能测试的目标。
例如,确定要测试的系统功能、用户访问模式、系统负载以及所需的性能指标。
2. 设计性能测试方案根据性能测试目标,设计性能测试方案。
包括确定性能测试的范围、测试的环境、测试的数据以及测试的方法。
3. 准备性能测试环境在进行性能测试之前,需要准备一个性能测试环境。
这个环境应该模拟真实的生产环境,包括硬件设备、网络配置、操作系统等。
4. 编写性能测试脚本根据性能测试方案,编写性能测试脚本。
这些脚本将模拟用户的访问行为,并收集系统的性能数据。
5. 执行性能测试执行性能测试脚本,并记录系统在各种负载情况下的性能数据。
这些数据可以包括响应时间、吞吐量、并发用户数等指标。
6. 分析性能测试结果根据性能测试结果,分析系统的性能瓶颈。
可以通过查看系统的性能数据,找出系统的瓶颈所在,例如数据库访问、网络带宽等。
7. 进行性能优化根据性能测试结果,进行性能优化。
可以采取一些措施,如增加服务器的硬件资源、优化数据库查询语句、调整系统配置等,以提高系统的性能。
8. 重新执行性能测试在进行性能优化之后,重新执行性能测试,并对比优化前后的性能数据。
如果系统的性能有显著提升,则说明优化措施是有效的。
9. 定期进行性能测试性能测试不仅仅是一个一次性的过程,而是一个持续的过程。
需要定期进行性能测试,以确保系统的性能稳定并满足用户的需求。
三、性能测试的工具1. JMeterJMeter是一个开源的性能测试工具,它可以模拟多个用户对系统进行访问,并收集系统的性能数据。
LoadRunner性能测试主要图表分析HP Mercury LoadRunner 是一款功能相当强大的性能测试工具,由三个部分构成, VUGen, Controller以及Analysis. 其中VUGen负责进行脚本录制, Controller是一个总控中心,负责场景的配置,监控器的选取和监控,并选择合适的负载生成器进行执行, Analysis是一个分析模块,主要负责所有执行数据的分析以及报告的生成.之所以说LoadRunner是强大的性能测试工具,主要是因为VUGen支持大概好几十种主流的协议. 因此支持的被测对象相当广泛,另外Analysis也有超强的功能,提供非常丰富的图表,供测试结束之后分析和定位问题.1 监控Windows系统资源操作步骤:(1)在待监控的主机上检查和监控相关的服务是否打开,如果没有,则需要手工启动这些服务。
这些服务主要有“Network DDE”、“Remote Registry”,对于一些个别的主机可能还要打开“Net Logon”服务。
(2)以管理员方式从运行Controller的主机上登录待监控主机。
例如点击开始菜单的“运行”,输入“\\待监控主机IP\d$”,在弹出的登录界面中输入管理员账户和密码,如果列出主机“待监控主机IP”D盘的文件,则表示登录成功。
(3)在监控数据图中选择“Windows Resources”,点击右键选择“Add Measurements”,在弹出的Windows资源对话框中点击上面的“Add”,输入要监控的主机IP地址,然后点击“OK”确定。
(4)点击“Windows Resources”窗口中下面的Add,添加需要监控的计数器。
添加完成后返回Controller查看监控结果。
(5)如果可以看到监控数据,则表示监控正常。
否则需要查看某些Windows服务是否启动或因某些防火墙导致不能正常监控。
Windows要监控的参数主要有CPU利用率、可用内存容量、服务线程占用的CPU资源量等性能指标,这些计数值直接体现着系统的性能表现。
如何进行性能测试发现并解决应用程序瓶颈现代软件开发中,应用程序性能的问题是一项重要的挑战。
一个高性能的应用程序能够提升用户体验,增加用户黏性,而性能瓶颈则可能导致用户流失和业务损失。
因此,进行性能测试并及时解决应用程序的瓶颈是保证应用程序稳定性和用户满意度的关键。
本文将介绍如何进行性能测试,发现和解决应用程序的瓶颈问题。
以下是具体的步骤和解决方案:一、需求分析和测试计划在开始性能测试之前,首先需要进行需求分析和测试计划的制定。
明确测试的目标、范围和时间等因素,为后续的测试工作提供指导。
同时,还需要确定测试的性能指标,包括响应时间、并发用户数、吞吐量等。
二、环境准备和基准测试在进行性能测试之前,需要准备测试环境。
这包括硬件设备、操作系统、网络环境等各方面的设置。
另外,还需要进行基准测试,即在正常负载下对应用程序的性能进行基准测试,以便对比分析后续的性能测试结果。
三、性能测试的设计和执行在进行性能测试时,需要设计测试用例和场景,模拟实际的用户行为和业务场景。
可以考虑使用压力测试、负载测试和性能稳定性测试等方式,通过不同的负载条件来测试应用程序的性能表现。
同时,还需要收集系统资源利用率、日志信息等数据,以便后续的分析和解决问题。
四、性能瓶颈的发现和分析在性能测试完成后,需要对测试结果进行分析,找出应用程序的性能瓶颈。
可以通过查看系统日志、性能监控工具和性能分析工具等方式,找出系统中存在的性能问题。
常见的性能瓶颈包括数据库访问、网络延迟、CPU和内存资源等方面。
五、性能问题的解决方案根据性能瓶颈的具体情况,需要采取相应的解决方案。
例如,对于数据库访问的性能问题,可以对数据库进行性能优化,包括索引优化、查询优化等措施;对于网络延迟的问题,可以考虑使用CDN加速、网络优化等方式;对于CPU和内存资源的问题,可以考虑进行代码优化、资源调整等方式。
根据具体情况选择合适的解决方案,以提升应用程序的性能。
六、性能测试的监控和迭代性能测试不仅是一次性的活动,还需要进行持续的监控和迭代。
性能瓶颈是软件开发中常见的问题之一,它可以导致应用程序运行缓慢或不稳定。
为了发现并解决性能瓶颈,开发人员通常借助性能分析工具来帮助他们定位问题所在。
本文将讨论使用性能分析工具寻找性能瓶颈的方法和技巧。
性能分析工具可以帮助开发人员深入了解应用程序的运行情况,找出导致性能下降的原因。
其中,常用的性能分析工具包括Profiling 工具、Tracing工具和Debugging工具等。
下面将介绍一些常用的性能分析工具以及它们的使用方法。
首先是Profiling工具,它可以记录应用程序在不同层次上的执行时间和资源使用情况。
通过对Profiling结果的分析,可以确定程序中的热点代码,即运行时间较长且频繁执行的代码段。
一般来说,性能瓶颈通常出现在热点代码中。
开发人员可以通过一些优化手段,比如减少循环次数、缓存计算结果等来提高性能。
其次是Tracing工具,它可以记录应用程序的执行路径和函数调用关系。
通过对Tracing结果的分析,可以找出程序中的耗时操作和频繁调用的函数。
这些函数可能是性能瓶颈的根源,开发人员可以对其进行优化。
例如,可以尝试减少函数调用次数、优化函数算法等来提高性能。
除了Profiling和Tracing工具,还有Debugging工具可以帮助开发人员发现和解决性能瓶颈。
Debugging工具常用于调试程序的错误和异常,但它们也可以用于分析程序的性能问题。
通过在关键位置插入断点,并观察程序的执行过程,开发人员可以分析程序在不同断点位置的性能差异。
通过对Debugging结果的分析,可以找到导致性能问题的代码段,并进行优化。
在使用性能分析工具时,开发人员还需要注意一些技巧。
首先,应尽量在真实环境下进行性能分析。
因为在不同的环境中,应用程序的性能可能存在差异。
其次,应避免过度依赖性能分析工具。
虽然工具可以帮助开发人员定位性能瓶颈,但它们并不能解决问题。
开发人员仍然需要根据分析结果,进行代码优化和重构。
性能测试中如何定位性能瓶颈?地址:2011-4-15 来源:网络性能测试的概念是什么,基本目的是什么,我想大家都基本清楚,不作详述,总之,性能测试只是测试过程中的一种方式,帮助我们的功能更好的运行,如果功能测试是可用,易用,满足需求、用户使用为目的,性能测试无非就是让这些目的更流畅。
没有什么专业的概念,无非实现两个字:好用!所以,性能测试这种测试方式在发生过程中,其中一个过渡性的工作,就是对执行过程中的问题,进行定位,对功能的定位,对负载的定位,最重要的,当然就是问题中说的“瓶颈”,接触性能测试不深,更非专家,自己的理解,瓶颈产生在以下几方面:1、网络瓶颈,如带宽,流量等形成的网络环境2、应用服务瓶颈,如中间件的基本配置,CACHE等3、系统瓶颈,这个比较常用:应用服务器,数据库服务器以及客户机的CPU,内存,硬盘等配置4、数据库瓶颈,以ORACLE为例,SYS中默认的一些参数设置5、应用程序本身瓶颈,针对网络瓶颈,现在冒似很少,不过也不是没有,首先想一下如果有网络的阻塞,断网,带宽被其他资源占用,限速等情况,应用程序或系统会是什么情况,针对WEB,无非是超时,HTTP400,500之类的错,针对一些客户端程序,可能也是超时,掉线,服务器下发的,需要服务器返回的信息获取不到还有一种更明显的情况,应该就是事务提交慢,如果封装事务的代码再不完善,一般造成的错误,无非就是数据提交不完整,或者因为网终原因+代码缺陷造成重复性提交。
如此综合下来,肯定是考虑网络有瓶颈,然后考虑网络有问题时,怎样去优化,是需要优化交互的一些代码,还是接口之类的。
应用服务的瓶颈的定位,比较复杂,学习中,不过网上有很多资料可以参考的。
一般像tomcat,weblogic之类的,有默认的设置,也有经过架构和维护人员进行试验调试的一些值,这些值一般可以满足程序发布的需要,不必进行太多的设置,可能我们认识的最基本的就是JAVA_OPTS的设置,maxThreads,time_out之类的参数我们做借助LR,Jemeter或webload之类的工具,执行性能测试,尤其是对应用服务造成了压力,如果应用服务有瓶颈,一般我们设置的log4j.properties,日志都会记录下来。
然后根据日志,去进一步确定应用服务的问题系统瓶颈,这个定位虽说比较复杂,但是有很多前辈的经验值参考,不作说明,相信用LR的同行,也可以从性能记数器中得出一些指标值,加上nagios,cacti,可以很明显的看出系统哪些资源够用,哪些资源明显不够用。
不过,一般系统瓶颈的造成,是因为应用程序本身造成的。
关于这点儿的分析和定位,就需要归入应用程序本身瓶颈分析和定位了。
现在基本所有的东东,都离不开数据库这个后台,数据库的瓶颈实在是不知道是什么概念,数据库管理员的工作,数据库管理员日常做的工作,可能就是有瓶颈定位的工作,比如:查询一下V$sys_event,V$sysstat,v$syssql之类的表,比对一下日常正常情况下的监控数据,看一下有没有异常等。
其他方面,我也不是太了解。
应用程序瓶颈,这个是测试过程中最需要去关注的,需要测试人员和开发人员配合执行,然后定位,我这儿做的大都是执行性的,比如会有脚本去运行,开发人员会结合jprofiler之类的工具,去看一下堆遍历,线程剖析的情况确定哪儿有问题。
大致是这样,没有实际操作过逐步细化分析,先可以监控一些常见衡量CPU,内存,磁盘的性能指标,进行综合分析,然后根据所测系统具体情况,进行初步问题定位,然后确定更详细的监控指标来分析。
怀疑内存不足时:方法1:【监控指标】:Memory Available MBytes ,Memory的Pages/sec,page read/sec,Page Faults/sec【参考值】:如果Page Reads/Sec 比率持续保持为5,表示可能内存不足。
Page/sec 推荐00-20(如果服务器没有足够的内存处理其工作负荷,此数值将一直很高。
如果大于80,表示有问题)。
方法2:根据Physical Disk 值分析性能瓶颈【监控指标】:Memory Available MBytes ,Pages read/sec,%Disk Time 和Avg.Disk Queue Length【参考值】:%Disk Time建议阈值90%当内存不足时,有点进程会转移到硬盘上去运行,造成性能急剧下降,而且一个缺少内存的系统常常表现出很高的CPU利用率,因为它需要不断的扫描内存,将内存中的页面移到硬盘上。
怀疑内存泄漏时【监控指标】:Memory Available MBytes ,Process\Private Bytes和Process\Working Set,PhysicalDisk/%Disk Time【说明】:Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏。
内存泄漏应该通过一个长时间的,用来研究分析当所有内存都耗尽时,应用程序反应情况的测试来检验。
CPU分析【监控指标】:System %Processor Time CPU,Processor %Processor Time CPUProcessor%user time 和Processor%Privileged Timesystem\Processor Queue LengthContext Switches/sec 和%Privileged Time【参考值】:System\%Total processor time不持续超过90%,如果服务器专用于SQL Server,可接受的最大上限是80-85% ,合理使用的范围在60%至70%。
Processor %Processor Time小于75%system\Processor Queue Length值,小于CPU数量的总数+1CPU瓶颈问题1、System\%Total processor time如果该值持续超过90%,且伴随处理器阻塞,则说明整个系统面临着处理器方面的瓶颈.注:在某些多CPU系统中,该数据虽然本身并不大,但CPU之间的负载状况极不均衡,此时也应该视作系统产生了处理器方面的瓶颈.2、排除内存因素,如果Processor %Processor Time计数器的值比较大,而同时网卡和硬盘的值比较低,那么可以确定CPU 瓶颈。
(内存不足时,有点进程会转移到硬盘上去运行,造成性能急剧下降,而且一个缺少内存的系统常常表现出很高的CPU利用率,因为它需要不断的扫描内存,将内存中的页面移到硬盘上。
)造成高CPU使用率的原因:频繁执行程序,复杂运算操作,消耗CPU严重数据库查询语句复杂,大量的where 子句,order by,group by 排序等,CPU容易出现瓶颈内存不足,IO磁盘问题使得CPU的开销增加磁盘I/O分析【监控指标】:PhysicalDisk/%Disk time,PhysicalDisk/%Idle Time,Physical Disk\ Avg.Disk Queue Length,Disk sec/Transfer【参考值】:%Disk Time建议阈值90%Windows资源监控中,如果% Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。
Processor%Privileged Time该参数值一直很高,且如果在Physical Disk 计数器中,只有%Disk time 比较大,其他值都比较适中,硬盘可能会是瓶颈。
若几个值都比较大,那么硬盘不是瓶颈。
若数值持续超过80%,则可能是内存泄露。
如果Physical Disk 计数器的值很高时该计数器的值(Processor%Privileged Time)也一直很高,则考虑使用速度更快或效率更高的磁盘子系统。
Disk sec/Transfer 一般来说,该数值小于15ms为最好,介于15-30ms之间为良好,30-60ms之间为可以接受,超过60ms则需要考虑更换硬盘或是硬盘的RAID方式了. Average Transaciton Response Time(事务平均响应时间)随着测试时间的变化,系统处理事务的速度开始逐渐变慢,这说明应用系统随着投产时间的变化,整体性能将会有下降的趋势Transactions per Second(每秒通过事务数/TPS)当压力加大时,点击率/TPS曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开始出现瓶颈Hits per Second(每秒点击次数)通过对查看“每秒点击次数”,可以判断系统是否稳定。
系统点击率下降通常表明服务器的响应速度在变慢,需进一步分析,发现系统瓶颈所在。
Throughput(吞吐率)可以依据服务器的吞吐量来评估虚拟用户产生的负载量,以及看出服务器在流量方面的处理能力以及是否存在瓶颈。
Connections(连接数)当连接数到达稳定状态而事务响应时间迅速增大时,添加连接可以使性能得到极大提高(事务响应时间将降低)Time to First Buffer Breakdown(Over Time)(第一次缓冲时间细分(随时间变化))可以使用该图确定场景或会话步骤运行期间服务器或网络出现问题的时间。
碰到过的性能问题:1. 在高并发的情况下,产生的处理失败(比如:数据库连接池过低,服务器连接数超过上限,数据库锁控制考虑不足等)2. 内存泄露(比如:在长时间运行下,内存没有正常释放,发生宕机等)3. CPU使用偏离(比如:高并发导致CPU使用率过高)4. 日志打印过多,服务器无硬盘空间如何定位这些性能问题:1.查看系统日志,日志是定位问题的不二法宝,如果日志记录的全面,很容易通过日志发现问题。
比如,系统宕机时,系统日志打印了某方法执行时抛出out of memory的错误,我们就可以顺藤摸瓜,很快定位到导致内存溢出的问题在哪里。
2. 利用性能监控工具,比如:JAVA开发B/S结构的项目,可以通过JDK自带的Jconsole,或者JProfiler,来监控服务器性能,Jconsole可以远程监控服务器的CPU,内存,线程等状态,并绘制变化曲线图。
利用Spotlight可以监控数据库使用情况。
我们需要关注的性能点有:CPU负载,内存使用率,网络I/O等3. 工具和日志只是手段,除此之外,还需要设计合理的性能测试场景具体场景有:性能测试,负载测试,压力测试,稳定性测试,浪涌测试等好的测试场景,能更加快速的发现瓶颈,定位瓶颈4. 了解系统参数配置,可以进行后期的性能调优除此以外,还想说个题外话,就是关于性能测试工具的使用问题在刚开始用Loadrunner和JMeter的时候,做高并发测试时,都出现过没有把服务器压垮,这两个程序自己先倒下的情况。