做性能测试时候进行结果收集和监控是我们必须要进行的一个步骤,所以选择一个好的监控工具能帮我们省事省心。我们今天给大家介绍的监听工具nmon,就是一个非常强大而且市场上也非常主流应用的一个监控工具。
nmon它可以帮助我们在压测开始很长时间内监控全过程的各种资源消耗占用情况,我们就需要用今天的工具 。
nmon是什么
nmon是 Nigel's performance Monitor for Linux【nigel的linux性能监控器】的英文缩写,是一款使用非常灵活的性能监控工具。它这相比于其他的性能监控工具主要有如下的优势:
- 工具本身消耗的资源比较少,对服务器的性能结果干扰很小;
- 工具监控的数据类型种类比较齐全,比如监控CPU,内存,磁盘,网络的信息,并可以对每个信息进行细分;
- 不仅可以监控CPU等,还可以对CPU进行信息的细分,比如用户态 系统态CPU 空闲等;
- 内存: 可以监控到详细的虚拟内存、实际内存 以及各线程占用的内存情况都有。
- 工具使用非常简单: 下载解压缩工具包直接启动就可以,不需要写复杂的脚本,没有任何使用门槛。
nmon的安装
nmon分为服务器监听工具和客户端分析工具两个部分。
服务器监听工具安装
服务器监听工具需要放在被测试服务器上,并一定要跟服务器的版本对应,所以下载安装之前需要先确认一下系统的版本:
- 1、确认被测服务器的系统版本, 通过lscpu或者 cat /etc/redhat-release : 查看系统版本
比如cat /etc/redhat-release结果显示: CentOS Linux release 7.9.2009 (Core),说明系统是centOS的7的,64bit的操作系统。
- 2、下载服务器监听的安装包:https://nchc.dl.sourceforge.net/project/nmon/nmon16m_helpsystems.tar.gz ,并上传到被测的服务器上;
- 3、在服务器上安装这个nmon工具:
- 1)解压工具:tar -xzvf nmon.tar.gz
- 先创建一个目录: mkdir nmon
- 再解压到指定目录:tar -xzvf nmon16m_helpsystems.tar.gz -C nmon
- 2) 进入解压后的文件夹,ls查看内容
- 里面有各种系统的启动包,我们要启动我们系统对应的包:比如 nmon_x86_64_centos7,版本错了就会报错了。
- 1)解压工具:tar -xzvf nmon.tar.gz
3)启动服务: ./nmon_x86_64_centos7 ,可以按 h进入帮助文档,q可以退出。进去的工具页面如下:
客户端解析工具安装:
1、官网下载安装包:下载下来是个压缩包:
2、压缩到本地,可以得到两个文件:
- 第一个是工具使用帮助文档,但是工具使用很简单,基本也不用看帮助文档;
- 第二个是具体工具使用的文件。
到这里就工具的安装和准备就完成了。
nmon的三种运行模式
nmon工具提供了三种用户运行的模式,可以给不同的场景使用。三种模式分别是:
- 屏幕交互模式 :使用简单的命令字母就可以得到监控结果,需要实时关注屏幕数据,用于进行实时数据分析场景;
- 数据收集模式: 可以在后台自动收集数据,并自己可以定义收集的时长,真正做到无人值守和持久化收集数据;
- 定时任务模式:定时执行监控,可以指定很多计划去执行,也适合更长时间的数据收集场景。
接下来,我们就分别结合这三种场景给大家介绍一下nmon工具的使用和相关的命令参数。
屏幕交互模式
nmon 提供了非常丰富的参数可以进行各种信息的监控;我们可以通过./nmon -h 进入完整的帮助手册,可以看到详细的所有的命令参数。
参数很多,但是不需要每个都知道,常用的就是cmdrtn 这六个,我们分别来讲解一下这六个参数分别监控的数据。
1)c: 进入nmon界面输入小写的c,就可以看到cpu的统计信息,会包括详细信息如下: 用户态 系统态 等待io的CPU和空闲占的CPU情况;再输入c就不展示这个界面了。
-
右边后面部分是占比100%位,就是目前总体CPU占比;
-
这个界面默认2s刷新一次,所有每次的显示的数据是个瞬间值,适合用来做实时的数据分析 ;
- 后面的U和S 是用户态 和系统态的CPU占用率;
- 最下面的一行是CPU的平均值的计算显示.
2)m:小写m命令是用来进行 nmon内存的监控,会显示所有内存详细的信息。比如总共的内存,空闲的内存等信息:
-
RMA_Memory: 物理内存信息,包括总共和空闲,以及空占比。
-
Swap_Space: 交换分区由磁盘划分出来的虚拟内内存;
-
如果发现使用率过高了,在下面的详细信息里看看具体使用在哪些地方了; 比如cache的占比,active的占比等
- 但是要更加细化的知道哪些服务占用,需要使用其他的一些工具分析,通过nmon只能了解大概的情况。
通过这个监控可以很好的看到内存的使用情况,如果内存使用率过高: 应用可能被重启, 服务器可能崩溃, 后果是很严重的。
3)d: 小写的d,通过图形化的方式展示IO的情况
- write操作【Input】,read 【output】,分别展示读写的操作;
- 右侧是io的繁忙程度百分占比: 如果很高就需要分析问题
- 可以通过这个数据分析得到是否磁盘io成为了系统的瓶颈,如果是的话,是读还是写瓶颈。
4)n:小写的n,用来做网络的监控
- NetworkError Counters部分:如果有报错就会显示,否则会消失。
- Network I/O部分:显示接受和发送的包的大小,接受和发送的包的个数,接受和发送包的尺寸等信息。
- 跟我们性能相关的数据是第二列和第三列: 发送和接受的报文的多少,还跟网卡的处理上限和带宽的上限的关系,取他们的最小值【短板】跟我们发送和接受的数据做比对,判断网络就是否成为了性能瓶颈了。
5)rt:小写的r和t,分别监控resource和top。
- t: 进程消耗资源比较多的进行排序显示,可以有效的知道哪些应用消耗资源最多
- r: 资源: 操作系统的资源信息,关于cpu的介绍,发型版本的介绍都在里面
nmon 数据收集模式
使用命令控制比较长的收集测试结果:./nmon -f -s 2 -c 10
参数解析:
- -f:标准输出到.nmon文件 : 不加名字会有默认的hostname+时间的方式命名 后缀是.nmon
- -s:收集数据间隔时长: 比如设置为2s
- -c:总共收集次数: 比如总共收集10次
以上的命令也就是收集最近20s的监控数据。输入命令后,会在当前目录生成一个文件,如下图所示:
等时间到了之后,把生成的文件导出到本地,可以使用前面安装的客户端分析工具进行解析:
- 1、使用Microsoft office打开含有宏的excel文件
- 2、选择导出到本地的nmon文件
- 3、保存结果
- 4、查看结果文件
然后可以生成各个维度的数据图标和统计信息:
nmon的定时模式
这个模式是按照你定的时间跨度去收集,不需要自己计算收集的时间。可以加上的参数如下:
- -x 收集1天数据,默认为-s900 -c96
- -X 收集1个小时,默认为-s30 -c120, 这个用的比较多。
- -z 用root账户运行,收集1天数据,输出到/var/perf/tmp文件
三种模式的使用优先级总结
1、屏幕交互模式用的最多; 因为做性能测试的时候需要实时分析很多数据 及时性;
2、其次是数据收集模式,可以查看长时间内的数据
3、最后是定时模式: 这种用的比较少,一方面时间太长,另外这个也可以被第二种替代。
欢迎来到testingpai.com!
注册 关于