性能监控工具nmon介绍
做性能测试,服务器监控是至关重要的,使用nmon命令可以轻松捕捉系统资源的使用情况,便于做性能分析。
nmon官方介绍
- nmon是一种在 AIX 与各种 Linux 操作系统上广泛使用的监控与分析工具
- 它能在系统运行过程中实时地捕捉系统资源的使用情况,记录的信息比较全面
- 它可将服务器系统资源耗用情况收集起来并输出一个特定的文件,并可利用 excel 分析工具(nmon analyser)进行数据的统计分析
nmon可监控的数据类型
- CPU使用率
- 内存使用情况
- 磁盘适配器
- 文件系统中的可用空间
- 页面空间和页面速度
- 异步I/O,仅适用于AIX
- 网络文件系统(NFS)
- 磁盘 I/O 速度、传输和读/写比率
- 服务器详细信息和资源
- 内核统计信息
- 消耗资源最多的进程
- 运行队列信息
nmon特点
- nmon 运行不会占用过多的系统资源,通常情况下CPU利用率不会超过 2%
- 功能强大,监控数据类型全面
- 结合grafana之类的仪表图,可以更直观的实时展示所监控的数据
- 移植性、兼容性较好
- 无人值守监控
- 可以实时查看监控结果,也可以测试结束后本地查看监控结果
Linux下安装
检查安装环境
# 查看操作系统的信息
[root@centos-7 test_001]# uname -a
Linux centos-7 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
# 查看linux发行版本
[root@centos-7 test_001]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.9.2009 (Core)
Release: 7.9.2009
Codename: Core
下载nmon
根据上面查到的操作系统信息下载对应的nmon软件包(我这里是x86_64_centos7)
方式一:官方下载
官方地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
通过FTP上传到服务器目录下
方式二:服务器直接敲命令行
wget http://sourceforge.net/projects/nmon/files/nmon16e_mpginc.tar.gz
这种方式无法下最新版的
方式三:百度云下载链接
包含了 nmon 安装包和分析数据工具包
链接:https://pan.baidu.com/s/1wjgpGFn91mdSTIcGeN7PSw 提取码:xynl
解压
# tar -zxvf nmon16m_helpsystems.tar.gz
查看解压后的文件
运行nmon
启动nmon
为了运行时操作方便,我们将nmon_***文件改名为nmon,首先找到与操作系统对应的文件,我这里是nmon_x86_64_centos7,将其改名为nmon,命令如下:
# mv nmon_x86_64_centos7 nmon
然后运行nmon就可以简单的敲./
# ./nmon
常用nmon快捷命令
- q : 停止并退出 nmon
- h : 查看帮助
- c : 查看 CPU 统计数据
- m : 查看内存统计数据
- d : 查看硬盘统计数据
- k : 查看内核统计数据
- n : 查看网络统计数据
- N : 查看 NFS 统计数据
- j : 查看文件系统统计数据
- t : 查看高耗进程
- V : 查看虚拟内存统计数据
- v : 详细模式
按多个快捷命令可以同时显示多项监控结果,直到将当前屏幕占满。
nmon命令行参数
上面的快捷命令只能将当前的系统资源实时显示在屏幕下,无法保存到文件中,如果要将结果保存到文件进行分析,需要用到命令行参数,启动nmon时,可以指定以下参数
参数 | 作用 |
-f | 监控结果以文件形式输出,**默认:**机器名_日期_时间.nmon |
-F | 和 -f 一样作用,不过要指定输出文件名 |
-s | 采样频率,单位秒 |
-c | 采样次数 |
-m | nmon 文件保存的目录 |
-t | 显示资源占用率高的进程 |
命令行例子
./nmon -f -t -s 10 -c 6 -m /data/nmon
每 10s 采集一次系统资源数据,共采集 6 次(1 min 内收集 6 次),将最终 nmon 文件生成在 /data/nmon 目录下
将这个 .nmon 文件传输到本地,用于后续的结果分析
重点
- 一般来说不建议对稳定性测试(压力测试)使用 nmon 监控,因为生成的 nmon 文件超过10M时,分析工具会由于内存不足导致报错
- 如果必须进行的话,建议加大采样频次,降低采样次数(低于330次)
查看 nmon 监控结果
nmon_analyser 介绍
- nmon 监控捕获的信息,一般用 nmon_analyser 来进行分析
- nmon_analyser 由 IBM 提供, 使用 excel 的宏命令分析加载生成 excel 图表,展示资源占用的各项信息
下载nmon_analyser
官方:http://nmon.sourceforge.net/pmwiki.php?n=Site.Nmon-Analyser
百度云链接:https://pan.baidu.com/s/1wjgpGFn91mdSTIcGeN7PSw 提取码:xynl
解压后发现有两个文件
- psd:说明文档
- xlsm:宏文件,分析工具
运行nmon_analyser
打开 nmon analyser v66.xlsm,记住一定要通过 office 或者 wps 用 excel 的方式打开哦,且需要启动了宏
点击 Analyze nmon data,选择 导出的nmon 文件,会生成对应监控结果文件。
nmon 监控结果图表分析
分析结果文件为一个excel表格,里面分为 YS_SUMM、AAA、PIVOTCHART、BBBP、DISO_SUMM、CPU_SUMM、DISKBSIZE、DISKBUSY等多个标签页,每个标签页都有该主题下监控的明细数据和对应的统计图表
每个标签页都展示了对某一指标如CPU、内存、网络、I/O的详细监控数据
系统汇总界面:SYS_SUMM
页面显示项
- 主机名
- 执行日期
- 系统 cpu 使用情况(蓝线)
- 系统 I/O 情况(粉红线)
- 左纵轴为系统 cpu(user%+sys%)使用率
- 横轴为运行时长
- 右纵轴为系统磁盘传输(Disk xfers)
- 坐标下侧为统计信息:系统 I/O 情况(一个采集间隔内的平均值、最大值、出现最大值的时间),系统CPU使用情况等
参数 | 说明 |
Avg disk tps during an interval | 采集间隔内磁盘平均I/O次数该值等于Sheet DISK_SUMM中IO/sec列的平均值 |
Max disk tps during an interval | 采集间隔内磁盘最大I/O次数该值等于Sheet DISK_SUMM中IO/sec列的最大值 |
Max disk tps interval time | 显示磁盘最大I/O所在时间点 |
Total number of Mbytes read | 采集间隔内磁盘读的总兆字节数 |
Total number of Mbytes written | 采集间隔内磁盘写的总兆字节数 |
Read/Write Ratio | 读写比率 |
User% | 采集间隔内所有CPU在User Mode下的Time占比(Avg、Max) |
Sys% | 采集间隔内所有CPU在System Mode下的Time占比(Avg、Max) |
Wait% | 采集间隔内所有CPU处于空闲且等待I/O完成的时间比例(Avg、Max) |
Idel% | 采集间隔内所有CPU处于空闲Time的占比(Avg、Max) |
CPU% | CPU总体占用情况(Avg、Max) |
重点
- 如果一个CPU被充分使用,CPU占用时间配比应为User%(65-70%),Sys%(30-35%),Idel%(0-5%)
- 如果 Sys% 占比过大说明系统进程本身占领大部分 cpu 资源,可考虑系统是否存在过多僵尸进程或者系统进程存在死循环等原因
- CPU Wait% 占比过大说明可能 IO 或内存方面存在瓶颈,可能是由于内存不够而引起频繁的的数据交换
系统信息:AAA
信息主要包括:执行命令,主机CPU数,操作系统内核版本信息,主机名等信息
CPU使用情况
CPU使用情况包括CPU_ALL,CPU_SUMM,CPU001…,包括主机 CPU 使用情况汇总以及每个 CPU 的运行情况。
此处重点关注 CPU_ALL 页面
CPU_ALL
CPU_ALL 页面可以看到如下图的CPU整体上在每个监控点的数据,包括 User%、Sys%、Wait%、Idle%、Steal%、CPU% 以及 CPUs( cpu 个数)及对应图表
参数说明
参数 | 说明 |
CPU Total | 执行间隔时间列表 |
User% | 采集间隔内所有CPU在User Mode下的Time占比(Avg、Max) |
Sys% | 采集间隔内所有CPU在System Mode下的Time占比(Avg、Max) |
Wait% | 采集间隔内所有CPU处于空闲且等待I/O完成的时间比例(Avg、Max) |
Idel% | 采集间隔内所有CPU处于空闲Time的占比(Avg、Max),此值和User%,Sys%,Wait%,Steal%之和等于1 |
CPU% | CPU总体占用情况,这个值通常等于User%+Sys% |
CPUs | CPU核数,即操作系统是多少核的 |
磁盘读写情况
共有六个标签可查看磁盘情况
- DISK_SUMM
- DISKBSIZE
- DISKBUSY
- DISKREAD
- DISKWRITE
- DISKXFER
磁盘的读、写及I/O统计信息,系统各磁盘分区的读写情况。此处重点关注 DISK_SUMM 即可
DISK_SUMM
DISK_SUMM按采集时间显示所有磁盘和分区的Read/Write的速率(KB/s)和所有磁盘和分区的I/O率。
参数说明
参数 | 说明 |
Disk total KB/s | 执行间隔时间列表 |
Disk Read KB/s | 采集间隔内磁盘设备的读速率 |
Disk Write KB/s | 采集间隔内磁盘设备的写速率 |
IO/sec | 采集间隔内磁盘整体平均每秒IO数 |
内存情况:MEM
参数说明
参数 | 说明 |
memtotal | 物理内存总大小,单位MB |
swaptotal | 虚拟内存(即交换空间)的总大小 |
memfree | 剩余物理内存大小 |
swapfree | 剩余虚拟内存大小 |
cached | 物理内存中被cache占用的缓存大小 |
active | 在活跃使用中的内存大小 |
buffers | 文件系统缓冲区的大小 |
swapcached | 虚拟内存中被cache占用的缓存大小 |
inactive | 不常使用的内存大小 |
系统网络情况:NET,NETPACKET
反映系统的网络运行情况,系统各个网络适配器读写的数据包数
NET页面显示系统中每个网络适配器的数据传输速率(千字节/秒)