Linux性能监控

Posted 吕先森的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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命令

以上是关于Linux性能监控的主要内容,如果未能解决你的问题,请参考以下文章

Day7: Python学习笔记之Linux——系统监控

Linux性能监控

Linux性能监控-sar

Linux性能监控-sar

Linux - 内存性能评估

性能测试系统监控