一, 概述
前段时间讲述了 Jmeter 利用插件 PerfMon Metrics Collector 来监控压测过程中服务器资源的消耗, 一个偶然机会, 我发现 nmon 这个
工具挺不错, 和 Jmeter 插件比起来, nmon 记录的信息更加全面一些.
nmon, 一款开源性能监控工具, 用于监控 Linux 系统的资源消耗信息, 并能把结果输出到文件中, 然后通过 nmon_analyser 工具产生
数据文件与图形化结果.
二, nmon 及 nmon analyser 的下载安装
nmon 下载地址: http://nmon.sourceforge.net/pmwiki.php
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 性能的免费工具
nmon analyser---- 生成 AIX 性能报告的免费工具
来源: https://www.cnblogs.com/Sweettesting/p/13048877.html