一、概述

  前段时间讲述了Jmeter利用插件PerfMon Metrics Collector来监控压测过程中服务器资源的消耗,一个偶然机会,我发现nmon这个

工具挺不错,和Jmeter插件比起来,nmon记录的信息更加全面一些。

  nmon,一款开源性能监控工具,用于监控linux系统的资源消耗信息,并能把结果输出到文件中,然后通过nmon_analyser工具产生

数据文件与图形化结果。

二、nmon及nmon analyser的下载安装

  nmon下载地址:http://nmon.sourceforge.net/pmwiki.php

  nmon analyser下载地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Nmon-Analyser

  nmon根据自己系统版本下载对应的安装包,本次测试使用的是 nmon16m_helpsystems.tar.gz ,nmon analyser下载最新的安装包,

本次测试使用的是 nmon_analyser_v66.zip 。

  1.将下载的nmon安装包上传到Linux新建目录并解压  

[test@node06 ~]$ cd /usr/local
[test@node06 local]$ mkdir nmon
[test@node06 local]$ cd nmon
[test@node06 nmon]$ tar -zxvf nmon16m_helpsystems.tar.gz

  2.根据自己系统的版本,给命令赋予可执行权限

 [test@node06 nmon]$ cat /etc/redhat-release
CentOS release 6.9 (Final)
[test@node06 nmon]$ chmod +x nmon_x86_64_centos6

  3.在命令行输入 ./nmon_x86_64_centos6 即可打开nmon界面

  

 在上面的交互式窗口中,可以使用nmon 快捷键来显示不同的系统资源统计数据:

  • q : 停止并退出 Nmon
  • h : 查看帮助
  • c : 查看 CPU 统计数据
  • m : 查看内存统计数据
  • d : 查看硬盘统计数据
  • k : 查看内核统计数据
  • n : 查看网络统计数据
  • N : 查看 NFS 统计数据
  • j : 查看文件系统统计数据
  • t : 查看高耗进程
  • V : 查看虚拟内存统计数据
  • v : 详细模式

 此时,我们可以通过快捷键来调取关心的系统资源进行显示,该种方式显示信息实时性强,能够及时掌握系统承受压力下的运行情况。

三、配置nmon的环境变量

  完成以上的配置后,已经可以正常使用nmon了。但是,大家有没有发现一个问题,那就是我们想使用nmon时必须找到该命令

的详细路径才能使用,这样就很不方便了。此时,我们需要将nmon的命令添加到系统环境变量中去,以后我们就可以在任何地方

使用该命令。

  1.修改启动文件名称,让名称简单化,修改完成执行一次试试

[test@node06 nmon]$ mv nmon_x86_64_centos6 nmon
[test@node06 nmon]$ ./nmon

  2.在命令行输入 vim /etc/profile ,将以下内容粘贴到文本末尾,路径要改为自己的安装路径

PATH=$PATH:/usr/local/nmon
export PATH

  3.在命令行输入 source /etc/profile 使配置生效,此时,可以在任意目录执行 nmon 命令来启动nmon。

四、使用nmon监控Jmeter压测期间的系统资源消耗情况

  1.在nmon目录下新建logs文件夹,用来存放监控文件

[test@node06 ~]$ cd /usr/local/nmon/
[test@node06 nmon]$ mkdir logs

  2.在命令行输入执行命令 nmon -s 1 -c 80 -f -m /usr/local/nmon/logs

参数说明:
-s 1 每隔n秒抽样一次,这里为1秒
-c 80 取出多少个抽样数量,这里为80,即监控=1*80/60=1分钟20秒
-f 按标准格式输出文件名称:<hostname>_YYMMDD_HHMM.nmon
-m 指定监控文件的存放目录,-m后跟指定目录,如果不指定目录会在该命令的源目录下生成相应的监控文件

  此命令启动后,会在我们指定的目录下生成监控文件,并持续写入资源数据,直至80个监控点收集完成。在此期间,测试人员

不需要去手动干预。如果想停止监控,查询进程号,然后杀死该进程即可。

[test@node06 ~]$ ps -ef|grep nmon
test 8863 1 0 17:05 pts/1 00:00:00 nmon -s 1 -c 120 -f -m /usr/local/nmon/logs/
test 9111 25160 0 17:07 pts/1 00:00:00 grep nmon
[test@node06 ~]$ kill 8863
-bash: kill: (8863) - No such process

  这里因为nmon已运行结束,所以当我kill的时候会提示 No such process 。

  3.运行Jmeter脚本,直至脚本运行结束

  本次压测只为了讲述使用流程,测试结果中TPS不具实际意义,为避免不必要的争议,这里将其马赛克了。

五、查看和分析压测结果

  1.将生成的监控文件下载到本地

  2.将本地的 nmon_analyser_v66.zip 解压,解压后的文件夹内有.pdf和.xlsm两个文件,我们打开.xlsm文件。

  3.点击Analyse nomn data按钮,将下载到本地的监控文件添加进去,最后会生成一个.xlsx文件,这个文件里就是我们需要的数据报告。

  注意:nmon analyser需要借助Excel的宏,WPS默认没有安装宏,即使安装了插件也容易出现异常情况,建议使用Microsoft Excel工作表。

  宏语言 Visual Basic for Application(VBA). Visual Basic是windows环境下开发应用软件的一种通用程序设计语言,功能强大,简便易

用。VBA是它的一个子集,可以广泛地应用于Microsoft公司开发的各种软件中,例如Word、Excel、Access等。

  4.需要关注的一些数据

  1)CPU_ALL,是服务器cpu使用率的详细数据。

 

  User%:显示在用户模式下执行的程序所使用的 CPU 百分比

  Sys%:显示在内核模式下执行的程序所使用的 CPU 百分比

  Wait%:显示等待 IO 所花的时间百分比

  Idle%:显示 CPU 的空闲时间百分比

  有效行:由于nmon启动时间未必是应用平稳的时间,同时nmon监控时间段也许比应用施压的要长。所以nmon的结果里常常存在

一些明显不合理的数据,比如前几次结果的CPU等占用明显低于中段的平均数据,或者后面几次采样结果很小,对于这样的数据我们

在分析的时候要予以过滤。

  2)MEM,是服务器内存使用率的概况。

  

  在MEM表里面使用如下公式计算出每行的内存使用率并进行取平均:

  (Memtotal - Memfree - cached - buffers)/Memtotal  * 100即( =(B2-F2-K2-N2)/B2*100)

  通过分析内存使用率的趋势,可定位是否内存泄露情况。

  有人看到内存使用率是99%,就认为内存用满了,并没有区分内存分页是什么类型,这样武断的说内存用满了是不科学的。在AIX上

主要关注的是计算内存占整个物理内存的百分比,linux上主要关注的是active内存占整个物理内存的百分比。

  3)Disk_SUMM,总体disk读、写以及I/O操作

  

  Disk Read kb/s 每个磁盘执行采样数据;(磁盘设备的读速率)

  Disk Write kb/s 每个磁盘执行采样数据;(磁盘设备的写速率)

  IO/sec 每秒进行的IO数(一次IO就是控制操作一次读或写,IO块就是读或写的大小),图中为上方黑色的线,报告中写的是这个参数的值

  4)NET,网络

  Total read 每秒接收到的千字节的数目,如图蓝色部分

  Total write 每秒发送的千字节的数目,如图橙色部分

  网络=Total read-Total write

  网络的指标一般要根据设备来确定,百兆网卡的意思是每秒能够传输的网络流量是100Mbps,即最大的下载速度是12.5MB/s,一般服务器是千兆网卡,即125MB/s

参考资料:  

  nmon 性能:分析 AIX 和 Linux 性能的免费工具

  https://www.ibm.com/developerworks/cn/aix/library/analyze_aix/index.html  

  nmon analyser----生成 AIX 性能报告的免费工具

  https://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/index.html

Linux下Jmeter+nmon+nmon analyser实现性能监控及结果分析的更多相关文章

  1. linux下的进程、网络、性能监控命令

    进程监控 端口   1)netstat -anp | grep xxx   2)lsof  -i:<port> 句柄    lsof  -n | grep xxxx 线程栈   1)gst ...

  2. linux下jmeter使用帮助

    1.linux下jmeter使用方法 例:jmeter -n -t test1.jmx -l logfile1.jtl -H 192.168.1.1 -P 8080 -h 帮助 -> 打印出有用 ...

  3. 《linux下进程的创建,执行,监控和终止》

    <linux下进程的创建,执行,监控和终止> http://blog.csdn.net/miss_acha/article/details/43671047 http://blog.csd ...

  4. Linux下系统监控工具nmon使用

    Mongodb安装在Centos7或以上的版本,对于系统的监控方法如下: 1.从\\10.10.10.1\ShareDoc\User\Zchen\linux系统监控下下载2个工具 nmon16e_mp ...

  5. Linux下安装使用NMON监控、分析系统性能

    背景:今天在LoadRunner11.0中使用rstat监控linux过程中,始终提示如下错: Monitor name :UNIX Resources. Cannot initialize the ...

  6. linux下jmeter持续集成Jenkins部署时问题解决

    之前成linux下安装了Jenkins,并做了一些简单的工作,这次正好将jmeter也集成进去,在实际操作时发现好多坑,写下做记录 怎么安装这里就不介绍了,网上很多资料,这里只记录问题,以供大家参数 ...

  7. Jmeter 分布式架构和服务器性能监控解决方案

    在对项目做大并发性能测试时,常会碰到并发数比较大(比如需要支持10000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能来搭建分布式并发环境 . 一. ...

  8. 如何提高Linux下块设备IO的整体性能?

    编辑手记:本文主要讲解Linux IO调度层的三种模式:cfp.deadline和noop,并给出各自的优化和适用场景建议. 作者简介: 邹立巍 Linux系统技术专家.目前在腾讯SNG社交网络运营部 ...

  9. linux 下 jmeter 配置

    一.在Linux服务器先安装sdk 1.先从客户端下载jdk1.8.0_144.tar.gz,再上传到服务器 2.解压:tar -xzf jdk1.8.0_144.tar.gz,生成文件夹 jdk1. ...

随机推荐

  1. Java实现 LeetCode 684 冗余连接(并查集)

    684. 冗余连接 在本问题中, 树指的是一个连通且无环的无向图. 输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, -, N) 的树及一条附加的边构成.附加的边的两个顶点包含在1到N中间 ...

  2. Java实现 LeetCode 319 灯泡开关

    319. 灯泡开关 初始时有 n 个灯泡关闭. 第 1 轮,你打开所有的灯泡. 第 2 轮,每两个灯泡你关闭一次. 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭).第 i 轮,每 ...

  3. Java实现 蓝桥杯VIP 算法训练 矩阵加法

    时间限制:1.0s 内存限制:512.0MB 问题描述 给定两个N×M的矩阵,计算其和.其中: N和M大于等于1且小于等于100,矩阵元素的绝对值不超过1000. 输入格式 输入数据的第一行包含两个整 ...

  4. Java实现 LeetCode 77 组合

    77. 组合 给定两个整数 n 和 k,返回 1 - n 中所有可能的 k 个数的组合. 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], ...

  5. 第八届蓝桥杯JavaC组省赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.外星日历 题目描述 某星系深处发现了文明遗迹. 他们的计数也是用十进制. 他们的文明也有日历.日历只有天数,没有年.月的概念. 有趣的 ...

  6. java实现第七届蓝桥杯方格填数

    方格填数 题目描述 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显示 ...

  7. 【asp.net core 系列】4. 更高更强的路由

    0. 前言 在之前我们介绍了请求通过路由寻找到控制器,以及控制器与视图的数据流转.那么,我们回过头来,再看看路由的一些其他用法. 1. 路由属性(Route Attribute) 按照英文的直接翻译, ...

  8. MySQL 8.0 yum安装和配置

    MySQL 8.0 centos7.5 x86_64 一.yum安装 1.先卸载机器和mysql有关的东西,有的安装了mariab-lib,会对安装有干扰,卸载了它. [root@localhost ...

  9. Go语言圣经[中文版]

    近期整理了一篇Go语言圣经[中文版]在线版本,排版比较适合手机以及PC阅读. Go语言圣经[中文版本]

  10. Source insight 提示: it is not currently available for write access

    点击阅读原文 使用sourceinsight编辑linux内核文件后不能保存,并且弹出窗口揭示:Error: "Z:\linux\kernel\kernel-2.6.13\scripts\k ...