nmon是一款开源性能监控工具,用于监控linux系统的资源消耗信息,并能把结果输出到文件中,然后通过nmon_analyser工具产生数据文件与图形化结果。因为它免费,体积小,安装简单,耗费资源低,广泛应用于AIX和Linux系统。
1|0一、nmon下载
我们在下载前首先查看Linux系统内核版本,因为不同的Linux版本,Nmon对应的版本也不同,Linux版本必须Nmon版本一一对应
1.查看Linux内核方法一
[mrjade@localhost nmon16d]$ cat /proc/versionLinux version 5.3.0-28-generic (buildd@lcy01-amd64-009) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020
内核版本5.3.0-28-generic
2.查看Linux内核方法二
[mrjade@localhost nmon16d]$ uname -a
Linux linux 5.3.0-28-generic #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
5.3.0-28-generic –内核版本
3.查看Linux内核方法三:直接问开发或者运维,简单粗暴
4.下载地址:nmon for Linux | Site / Download
2|0二、nmon命令
./nmon_x86_64_centos7 -f -s 10 -c 60 -m ./log/
命令的含义是:
-f :按标准格式输出文件名称:<hostname>_YYYYMMDD_HHMM.nmon
-t :输出最耗资源的进程
-s :每隔n秒抽样一次,这里为10秒
-c :取出多少个抽样数量,这里为采集 60 次,即监控 = 10*60 = 600秒 = 10分钟-m : 报告输入路径
nmonreport:监控记录的标题
hostname:主机名
3|0三、nmon性能结果报告分析
1.下载nmon analyser(用于将Nmon采集的数据转换成可视化图表)
2.双击打开nmon analyser v61.xlsm,切记不要用WPS,因为WPS不支持宏,点击Analyze nmon data按钮,,选择.nmon文件
3|1(1)SYS_SUMM【服务器资源使用率汇总】
服务器资源使用率汇总表:整体信息页面,显示当前服务器的总体性能情况
- 【正上方】Samples、First、Last:采集点样本统计。
Samples:采集点样本总数,折线图中出现的采集点统计总数。
First:第一个采集点的采集时间。
Last:最后一个采集点的采集时间。
- 【正中间】折线图:[蓝线:CPU%]为cpu占有率变化情况;[紫线:IO/sec]为磁盘IO的变化情况。
IO/sec:[紫线]仅显示磁盘IO/sec的图,不包括Network的I/O。每秒钟输出到物理磁盘的传输次数。
- 【左下角】Disk tps statistics:磁盘的总体数据,包括如下几个:
1、Avg tps during an interval:
显示采集间隔内磁盘平均I/O次数,该值等于Sheet DISK_SUMM中IO/sec列的平均值。
每个间隔时间内,平均每秒IO数,也可以理解为提交处理的次数。
2、Max tps during an interval:
显示采集间隔内磁盘最大I/O次数,该值等于Sheet DISK_SUMM中IO/sec列的最大值。
每个间隔时间内,每秒最大IO次数。
3、Max tps interval time:
显示磁盘最大I/O所在时间点。
最大传送次数出现的时间点。
4、Total number of Mbytes read:
显示采集间隔内磁盘读的总兆字节数,可能是nmon的bug,该值并不准确,并且使用LVM划分的虚拟磁盘可能会存在重复统计。
整个监控时间内读的字节数。
5、Total number of Mbytes written:
显示采集间隔内磁盘写的总兆字节数,该值并不准确,理由同上。
整个监控时间内写的字节数。
6、Read/Write Ratio:
显示 Total number of Mbytes read/ Total number of Mbytes written 的值。
实时读写比率。
- 【右下角】CPU:CPU的总体数据,包括如下几个:
// ********************* 橫行:CPU各项指标 **************************** //
1、User%:显示采集间隔内所有CPU在User Mode下的Time占比。
2、Sys%:显示采集间隔内所有CPU在System Mode下的Time占比。
3、Wait%:显示采集间隔内所有CPU处于空闲且等待I/O完成的时间比例。
4、Idle%:CPU空闲率,显示采集间隔内所有CPU处于空闲Time的占比。
5、CPU%:cpu占有率,显示采集间隔内所有CPU的(user%+system%)占比和。
// ****************** 纵列:CPU各项指标数据中的特殊值 ******************* //
1、Max:cpu各项指标数据中的最大值。
2、Avg:cpu各项指标数据中的整体平均值。
3、Max:Avg:cpu各项指标数据的最大值和平均值的比率。
1、Wait% 是 CPU 空闲状态的一种,当CPU处于空闲状态而又有进程处于 D 状态(不可中断睡眠)时,
系统会统计这时的时间,并计算到Wait%里。
2、Wait% 不是一个时间值,而是时间的比例,因此在同样 I/O Wait 时间下:
服务器 CPU 越多,Wait% 越低,它体现了 I/O 操作与计算操作之间的比例。
3、对 I/O 密集型的应用来说一般 Wait% 较高,且 Sheet PROC 中 Blocked 也较高,
这时需关注是什么导致了过多的进程等待。
3|2(2)MEM
1.内存(MB)报表:本 sheet 主图上显示空闲实存的数量
1、在 MEM 表里面使用如下公式计算出每行的内存使用率并进行取平均:
(Memtotal - Memfree - cached - buffers)/Memtotal * 100 即 =(C2-G2-L2-O2)/C2*100 统计后手动绘制拆线图,如
2、通过分析内存使用率的趋势,可定位是否内存泄露情况。
3、有人看到内存使用率是 99%,就认为内存用满了,并没有区分内存分页是什么类型,这样武断的说内存用满了是不科学的。
4、在 AIX 上主要关注的是计算内存占整个物理内存的百分比,linux 上主要关注的是 active 内存占整个物理内存的百分比。
2.图表说明:
3|3(3)CPU
Cpu使用率分为三部分,系统、用户和等待,分别对应图中红色、蓝色和灰色部分。
cpu使用率100%的情况,如果红色占大部分,说明系统进程本身占据大部分cpu资源,可考虑系统是否存在过多僵尸进程或者系统进程存在死循环等原因;如果蓝色占大部分,说明用户进程占用大量cpu资源,可考虑被压系统是否压力过大,或者被压系统存在大量运算等消耗cpu资源的操作。