性能测试监控工具的使用

监控的分层

理论上,咱们须要对系统数据流转的每一个节点作监控,收集数据,以便于分析。可是受限于环境问题或者时间问题,咱们不能面面俱到,因此须要把系统作一下简单的分类,选择最须要的地方进行监控。 java

系统资源的监控

对于承载应用的最基础设备,咱们须要充分了解它的使用状况,观察其当前的状态,对于硬件设备的评估,也有助于线上设备的采购和选择。通常状况下,咱们须要关注的内容有CPU、Memory、I/O、Network,也就是咱们一般说的3+1. python

注意点: linux

一、CPU咱们关注的是%us(用户使用率),%sy(系统使用率,当须要系统作任务调度的时候会消耗)须要注意。 ios

二、Linux下,空闲Memory的计算方式,基于Linux系统的内存使用原则,不要看到free的数据少了,以为是瓶颈了。 sql

例如:Total 2G usred 1.5G free 200M buffer 1G cache 500M shell

系统当前能使用的Memory总量 = free + buffer + cache 数据库

三、IO的瓶颈的确认须要特别注意,须要多方考虑,综合思考,"一切问题皆IO"。 架构

四、Network须要注意上下行及单位。 oracle

监控工具

Nmon小巧精练的工具,安装和使用都很方便,支持多版本的linux,内容丰富。 框架

Glances业内号称Linux系统实时监控的瑞士军刀,用python开发,很小巧,监控覆盖全面,界面清晰,经过颜色来区别不一样的等级,一目了然。

最高境界,利用linux自带的命令,经过shell脚本自行采集数据并绘制成图表。经常使用的命令top、iostat、pidstat、sar、netstat、iftop、vmsata、jstat(jvm使用状况)、jps(java进程)等。

应用层资源的监控

咱们能够操做系统的资源消耗,理解为是应用层问题的外在表现。在应用层,因为框架的不一样,开发人员水平及意识的限制,会产生各类各样的问题,致使了硬件资源的不合理消耗,从而产生性能问题。在这一层次,咱们一般关注如下问题:

一、阻塞,正在运行的线程没有运行结束,暂时让出CPU。

二、争用,多个线程对同一段数据进行不一样的操做。

三、死锁,好的线程锁是业务的保障,很差的锁是灾难。

四、理解线程状态图,有助于解决问题。

基于java的监控工具

Jvisualvm JDK自带监控工具,无需安装,只须要一个简单的配置,就能全方位监控代码运行状况,跟踪方便,插件丰富,你不能错过的工具。

JProfiler直觉式的GUI让你能够找到性能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。它让你得以对heap walker作资源回收器的root analysis,能够轻易找出内存漏失;heap快照(snapshot)模式让未被参照(reference)的对象、稍微被参照的对象或在终结(finalization)队列的对象都会被移除。

数据库资源的监控

目前,80%性能问题,会出如今数据库层面。配置不合理;开发人员没有意识,致使SQL执行效率差;线上的大数据量没有提早考虑;不合理的索引等等,都在时时刻刻影响着性能;咱们须要重点关注数据库层面的性能问题,关注点如下问题:

一、SQL的执行效率,或者说执行计划。

二、索引的正确使用。

三、大数据量状况下分库分表。

四、其它TOP N的消耗。

数据库监控工具

在oracle数据库中,没什么比AWR报告更好了,看懂了这份报告,基本上足够了。

Msql监控工具MONyog,内容全面,界面清爽,我的强力推荐此工具,今后查看慢SQL再也不是体力活。

总结

监控工具没有好坏之分,每一个节点选择一款并把它用熟悉,了解每一个指标背后的含义,才是正解。咱们要作到知其然而知其因此然,这样才能提升本身的判断力,找出问题的根本缘由。

性能测试须要丰富的经验,作得越久,你的价值越高。真正的高手会在系统架构之初,就会预期到并解决掉大部分的性能问题。当下,咱们不要急功近利,只想学习怎么分析怎么调优,咱们须要沉下心来,从小处作起,从基础作起。

相关文章
相关标签/搜索