Linux性能监控
今天为大家带来的是, 在测试过程中, 我们常用的一些性能测试的监控:
注: 以下命令执行均基于阿里云CentOS7.6系统!
一、top - 经典的Linux任务管理工具
作为一个广为人知的Linux工具,top是大多数的类Unix操作系统任务管理器。它可以显示当前正在运行的进程的列表,用户可以按照不同的条件对该列表进行排序。它主要显示了系统进程对CPU和内存的使用状况。top可以快速检查是哪个或哪几个进程挂起了你的系统。你可以在这里看到top使用的例子。
你可以在终端输入top来运行它并进入到交互模式:
二、tcpdump - 洞察网络封包
tcpdump可以用来查看网络连接的封包内容。它显示了传输过程中封包内容的各种信息。为了使得输出信息更为有用,它允许使用者通过不同的过滤器获取自己想要的信息。
可以参照的例子如下:
$ tcpdump -i eth0 not port 22
$ tcpdump -c 10 -i eth0
$ tcpdump -ni eth0 -c 10 not port 22
$ tcpdump -w aloft.cap -s 0
$ tcpdump -r aloft.cap
$ tcpdump -i eth0 dst port 80
三、Nmon
Nmon是一款计算机性能系统监控工具,因为它免费,体积小,安装简单,耗费资源低,广泛应用于AIX和Linux系统。
Nmon 可以很轻松的监控系统的 CPU、内存、网络、硬盘、文件系统、NFS、高耗进程、资源和 IBM Power 系统的微分区的信息。
$ yum list | grep nmon
# 搜索nmon安装包
$ yum -y install nmon.x86_64
# 安装nmon
$ nmon
# 输入nmon运行nmon
如下图 :
在上面的交互式窗口中,可以使用nmon 快捷键来显示不同的系统资源统计数据:
q : 停止并退出 Nmon
h : 查看帮助
c : 查看 CPU 统计数据
m : 查看内存统计数据
d : 查看硬盘统计数据
k : 查看内核统计数据
n : 查看网络统计数据
N : 查看 NFS 统计数据
j : 查看文件系统统计数据
t : 查看高耗进程
V : 查看虚拟内存统计数据
v : 详细模式
按下c,m,d后如下图,CPU、内存、磁盘的消耗情况都直观的展现出来了,按q键可以退出。
性能测试时,需要根据测试场景的执行情况,分析一段时间内系统资源的变化,这时需要nmon采集数据并保存下来,以下是常用的参数:
- -f 参数:生成文件,文件名=主机名+当前时间.nmon
- -T 参数:显示资源占有率较高的进程
- -s 参数:
-s 10
表示每隔10秒采集一次数据 - -c 参数:
-c 10
表示总共采集十次数据 - -m 参数:指定文件保存目录
如每隔5秒采集一次,一共采集12次,就是1分钟的数据
$ nmon -f -s 5 -c 12 -m .
关闭nmon进程, 需要获取到nmon的pid
$ ps -ef | grep nmon
$ kill -9 pid
# 关闭
四、sar
sar(System Activity Reporter, 系统活动情况报告): 是用于监控Linux系统各个性能的优秀工具,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
4.1 查看CPU使用情况 sar -u
$ sar 1 3
或
$ sar -u 1 3
%user 用户空间的CPU使用
%nice 改变过优先级的进程的CPU使用率
%system 内核空间的CPU使用率
%iowait CPU等待IO的百分比
%steal 虚拟机的虚拟机CPU使用的CPU
%idle 空闲的CPU
在以上的显示当中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。
4.2 将统计结果保存到文件 sar -o
$ sar -n DEV 1 10 -o sar.out
$ sar -d 1 10 -f sar.out
# 查看历史的IO
$ sar -u 1 10 -f sar.out
# 查看历史的cpu,单位1s, 采样10次
4.3 查看平均负载 sar -q
$ sar -q 1 3
runq-sz 运行队列的长度(等待运行的进程数,每核的CP不能超过3个)
plist-sz 进程列表中的进程(processes)和线程数(threads)的数量
ldavg-1 最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推
ldavg-5 最后5分钟的CPU平均负载
ldavg-15 最后15分钟的CPU平均负载
4.4 查看内存使用情况 sar -r
$ sar -r 1 3
kbmemfree 空闲的物理内存大小
kbmemused 使用中的物理内存大小
%memused 物理内存使用率
kbbuffers 内核中作为缓冲区使用的物理内存大小,kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
kbcached 缓存的文件大小
kbcommit 保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区)
commit 这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值
4.5 查看系统swap分区统计情况 sar -W
$ sar -W 1 3
4.6 查看IO和传递速率 sar -b
$ sar -b 1 3
tps 磁盘每秒钟的IO总数,等于iostat中的tps
rtps 每秒钟从磁盘读取的IO总数
wtps 每秒钟从写入到磁盘的IO总数
bread/s 每秒钟从磁盘读取的块总数
bwrtn/s 每秒钟此写入到磁盘的块总数
五、dstat
dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。dstat扬长避短,即克服了这些命令的局限又增加了一些额外的功能,不但拥有更多的监控项,也更灵活。dstat在性能测试、基准测试和排除故障过程中可以很方便监控系统运行状况。
$ yum list | grep dstat
# 搜索安装包
$ yum -y install dstat
# 安装dstat
六、atop
atop是一个功能非常强大的linux服务器监控工具,它的数据采集主要包括:CPU、内存、磁盘、网络、进程等,并且内容非常的详细,特别是当那一部分存在压力它会以特殊的颜色进行展示,如果颜色是红色那么说明已经非常严重了。
注意:所有的信息都是反映过去10S的状态信息
$ yum list | grep atop
# 搜索安装包
$ yum -y install atop.x86_64
# 安装atop
$ atop
# 执行atop命令