参考《全栈性能测试修炼宝典JMeter实战》第九章 性能监控诊断 第二节 系统性能分析思路和第三节 定位分析

  系统在工作负载中的性能受到许多因素影响,处理器速度、内存容量、网络或磁盘I/O控制器的数量以及磁盘的容量和速度是所以工作负荷的重要性能特征组件。还有其他应用程序自身的性能特征、工作负荷的特性、应用程序间的通信行为、磁盘或网络上的数据访问模式,还有终端用户对应用程序的使用模型。对特定工作负荷调优时,常常首先要假定许多物理环境特征,例如处理器数量、处理器类型、磁盘数量等保持不变。性能分析的主要目标是识别出工作负荷中哪些组件是当前提高性能和整体吞吐率的瓶颈,以及当工作负荷已经导致硬件能力饱和时,哪些硬件配置的改进会提高该工作负荷的吞吐率和性能。主要从以下几块进行分析:

一、CPU
  CPU是操作系统中运行的根本,他的执行速度与性能好坏很大程度上决定了系统整体的性能快慢,现在的cpu已经由之前的单核发展到多核,使得处理能力更强。当cpu处于满负载状态时,我们要结合系统附带的一些监控分析工具,检查系统日志等辅助分析cpu的使用情况。

Linux下查看cpu性能命令:
  查看物理cpu个数:cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
  查看每个物理cpu的核数量:cat /proc/cpuinfo |grep "cpu cores"|wc -l
  查看cpu和cpu核数量的使用数量:cat /proc/cpuinfo |grep "processor"|wc -l
  实时监控CPU的使用情况:top
  其他命令:vmstat、sar、dstat、mpstat、ps

定位分析:
  当系统利用率大于50%时,需要关注;大于70%需要密切关注;大于90%时,情况比较严重

二、内存
  内存太小会阻塞进程,甚至会导致应用程序被杀死,更严重的引起系统重启。内存太大,容易浪费。同时也要兼顾虚拟内存的大小,当系统的物理内存不够用的时候,就需要物理内存释放一部分以供程序正常使用。这些被释放的空间被临时保持到虚拟内存空间中,等需要时再次从虚拟内存中恢复保存的数据到物理内存。系统总是在内存不够用的时候才切换内存。

Linux下内存查看命令:free –m
  其他命令:vmstat、sar、dstat、top、ps

定位分析:
  当系统利用率大于50%时,需要关注;大于70%需要密切关注;大于90%时,情况比较严重

三、网络
  系统之间的通信是通过网络进行传输的,因此时间、网络延迟、阻塞等都可以影响系统性能。
  在系统中,要考虑对应的网络是否到达、防火墙是否开启、端口的访问、宽带是否被限制、路由的寻址、网络的时延等

定位分析:
  通过命令sar、ifconfig、netstat以及查看net的dev速率,通过查看发现收发包的吞吐速率达到网卡的最大上限,网络数据报文有因为这类原因2⃣而引发的丢包、阻塞等现象。测试过程中为了减少网络问题的影响,选择在局域网中进行。

四、I/O
  磁盘数据的读写的性能也会直接影响系统程序的性能,磁盘I/O系统是系统中最慢的部分。主要是CPU处理比磁盘物理操作块好几个数量级。针对I/O的场景模型,要考虑的有TPS、平均I/O数据、平均队列长度、平均服务时间、平均等待时间、IO利用率等指标。

定位分析:
  衡量系统IO的使用情况,可以用sar、iostat、iotop等命令进行系统的IO监控分析。当系统利用率大于40%时,需要关注;大于60%需要密切关注;大于80%时,情况比较严重

四、其他分析方向
  硬件
  数据库
  中间件
  程序部分(前端、后端、业务逻辑等)
  系统架构
  系统受到病毒感染

JMeter—系统性能分析思路(十三)的更多相关文章

  1. JMeter—系统性能分析思路

    系统在工作负载中的性能受到许多因素影响,处理器速度.内存容量.网络或磁盘I/O控制器的数量以及磁盘的容量和速度是所以工作负荷的重要性能特征组件.还有其他应用程序自身的性能特征.工作负荷的特性.应用程序 ...

  2. (转)Linux 系统性能分析工具图解读(一、二)

    Linux 系统性能分析工具图解读(一.二) 原文:http://oilbeater.com/linux/2014/09/08/linux-performance-tools.html 最近看了 Br ...

  3. Linux系统性能分析

    http://c.biancheng.net/cpp/html/2782.htmlLinux系统性能分析 这篇教程的目的是向大家介绍一些免费的系统性能分析工具(命令),使用这些工具可以监控系统资源使用 ...

  4. 通信原理实践(四)——模拟通信系统性能分析

    一.模拟通信系统性能分析 1.系统框图 2.信噪比定义 (1)输入信噪比: (2)输出信噪比: (3)调制制度增益: 3.模拟通信系统分析等价模型 即自己产生一个高斯白噪声,加入到调制信号,然后在送入 ...

  5. 操作系统性能分析与优化V1.0

    操作系统性能分析与优化V1.0 : http://www.docin.com/p-759561760.html

  6. Linux 系统性能分析工具 sar

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以 从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用 ...

  7. nmon与nmonanalyser系统性能分析

    nmon与nmonanalyser系统性能分析(图表) - [系统架构] 2011-05-15 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.c ...

  8. sar 找出系统瓶颈的利器 目前Linux上最为全面的系统性能分析工具之一 直接 sar -dur 1 30 即可看内存 CPU和IO占用

    12. sar 找出系统瓶颈的利器 sar是System Activity Reporter(系统活动情况报告)的缩写.sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行 ...

  9. Jmeter接口测试之参数传递(十三)

    在接口自动化测试中,经常会遇到的一种场景就是参数的场景,比如在用户列表中获取所有的用户列表,然后获取到某一个用户的ID,查看该用户的详细信息.首先在这里理清思路,它的流程是,首先获取到数据,然后在Jm ...

随机推荐

  1. mysql修改数据路径

    步凑: 1.关闭mysql服务 [root@localhost /]# service mysqld stop 2.移动mysql文件夹到自定义的目录 [root@localhost /]# mv / ...

  2. Docker构建Java web应用服务

    1.构建一个Java应用服务,包含两个步骤:a.一个镜像从URL拉取指定的WAR文件并保存到卷里b.一个含有Tomcat服务器的镜像运行这些下载的WAR文件 2.构建下载WAR的镜像 FROM cen ...

  3. MongoDB-副本集搭建与管理

    目录 MongoDB 副本集 一.副本集概念 二.副本集部署 三 .副本集维护 四.注意事项 MongoDB 副本集 一.副本集概念 单节点的 MongoDB 在数据的安全和冗余方面是比较低的,在生产 ...

  4. C语言第七讲,函数入门.

    C语言第七讲,函数入门. 一丶了解面向过程和面向对象的区别. 为什么要先讲面向过程和面向对象的区别? 面向过程,就是什么都要自己做.  比如你要吃饭. 那么你得自己做饭. 面向对象, 面向对象就是我要 ...

  5. Linux 源码安装 FFmpeg

    加班次数频繁,已经快一年没有写博了.由于此次在项目中使用到了 FFmpeg 来处理音视频,顾记录下在 Linux 系统中源码安装 FFmpeg 以便不时之需. 1. 安装 yasm yasm 是一个汇 ...

  6. JavaWeb学习 (十四)————JSP基础语法

    一.JSP模版元素 JSP页面中的HTML内容称之为JSP模版元素.  JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观. 二.JSP表达式 JSP脚本表达式(expression)用于将 ...

  7. Java Generator

    以前我以为只有Python才会有generator,看来当时的我才年轻,后来认真研读<Thinking in Java>之后大有感悟,原来Java亦有generator,故做一次记录分享. ...

  8. USDT与omniCore钱包

    USDTUSDT,又称为泰达币,是由Tether公司在 2015年推出的一种与美元锚定的加密货币,理论上,1USDT=1美元,这种价格的稳定性基于Tether公司声称对每一个发行的Tether在他们的 ...

  9. JavaScript中的window对象的属性和方法;JavaScript中如何选取文档元素

    一.window对象的属性和方法 ①setTimeout()方法用来实现一个函数在指定毫秒之后运行,该方法返回一个值,这个值可以传递给clearTimeout()用于取消这个函数的执行. ②setIn ...

  10. sql server:alter database name

    --step 1 : 修改数据库名称 USE master GO ALTER DATABASE GeovinDuCms SET SINGLE_USER WITH ROLLBACK IMMEDIATE ...