前言如果性能测试的目标服务器是linux系统,在如何使用linux自带的命令来实现性能测试过程的监控分析呢? 对于日常性能测试来讲,在linux下或是类Unix系统,我们必须掌握以下常用的指标查看命令。
当然还有其他命令,这里就上述笔者常用的命令推荐大家掌握。 psps命令能给出当前系统中进程的快照。下面我们列举几个常用的选项,对于其他的请参考官方文档或是自行搜索相关文档。
ps -ax
例如查找java相关的进程ps -ax | grep java
ps -aux
ps -aux --sort -pcpu
ps -aux --sort -pmem
ps -aux --sort -pcpu,+pmem
ps -aux | head -n 10 还有很多用法,这里就不做过多的列举。 pstreepstree命令以树状图显示进程间的关系。 下面我们看几个常用的示例。
pstree
pstree -p
pstree <pid>或
pstree -p <pid>
pstree -a 为什么要用pstree命令,通过该命令,能让你更清晰的了解你要监控的目标服务关联了哪些资源,能让你更加清楚其资源关联情况,增加在性能测试过程中分析的准确性。 不管是ps还是pstree命令,在性能测试过程中,最重要的一个应用技巧就是获取资源消耗最高的目标进程的线程id。例如: ps -mp <pid> -o HTREAD
或
ps -Lfp <pid><pid> 为目标进程id 在找到其线程id后就可以使用 printf "%x\n" 线程id 转换成十六进制数 然后结合jstack命令,获取其堆栈信息以供分析。 toptop命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。 与ps不同的是,top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。 直接使用即可 top 常规情况下主要关注以下指标:
Cpu(s):
Mem:
对于进程详细的表头重点关注: PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。 具体含义不做说明了。 另外常用的top命令选项如下: top 每隔5秒显式所有进程的资源占用情况 free查看内存情况,将used的值减去buffer和cache的值就是你当前真实内存使用。 Mem:表示物理内存统计
-/+ buffers/cache:表示物理内存的缓存统计
但对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。 所以从应用程序的角度来说 可用内存=系统free memory+buffers+cached. buffers是指用来给块设备做的缓冲大小,只记录文件系统的metadata以及 tracking in-flight pages. 使用free命令,能让你清楚的了解当前系统内存消耗情况。 vmstatvmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。 相比于top、free等命令,vmstat可以看到整个机器的CPU,内存,IO的消耗情况。 一般情况下vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如下命令: vmstat 2 1 2表示每个两秒采集一次服务器状态,1表示只采集一次。 这个命令是做性能测试进一步诊断分析必须掌握的的 下面我们对其进行更详细的说明: procs
memory
swap
一般情况下,si、so的值都为0,如果si、so的值长时间不为0,则表示系统内存不足,需要考虑是否增加系统内存。 IO
这里设置的bi+bo参考值为1000,如果超过1000,而且wa值比较大,则表示系统磁盘IO性能瓶颈。 system
上面这两个值越大,会看到内核消耗的CPU时间就越多,这个时候可能要考虑下为何内核的消耗会这么大,有可能有瓶颈存在。 CPU
sarsar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。 如果你的系统没安装该命令,请用以下方式进行安装 apt-get install sysstat
yum install sysstat 安装完成后在用以下命令启用: vi /etc/default/sysstat
将ENABLED改为“true”
ENABLED="true" 重启下sar服务,开始采集相关数据 /etc/init.d/sysstat start
sar [options] [-A] [-o file] t [n] 其中: t为采样间隔,n为采样次数,默认值是1; -o file表示将命令结果以二进制格式存放在文件中,file 是文件名。 options 为命令行选项,sar命令常用选项如下:
-A 查看汇总所有的报告-a 查看文件读写使用情况-B 查看附加的缓存的使用情况-b 查看缓存的使用情况-c 查看系统调用的使用情况-d 查看磁盘的使用情况-g 查看串口的使用情况-h 查看关于buffer使用的统计数据-m 查看IPC消息队列和信号量的使用情况-n 查看命名cache的使用情况-p 查看调页活动的使用情况-q 查看运行队列和交换队列的平均长度-R 查看进程的活动情况-r 查看没有使用的内存页面和硬盘块-u 查看CPU的利用率-v 查看进程、文件和锁表状态-w 查看系统交换活动状况-y 查看TTY设备活动状况
sar -u sar -q
sar -Bsar -rsar -W
sar -bsar -usar -d
例如,每10秒采样一次,连续采样3次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件cpu_info中,需键入如下命令: sar -u -o cpu_info 10 3 iostatiostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 iotop如果你想知道每个进程是如何使用IO的就比较麻烦。这个时候iotop可以上场了。 iotop 是一个用来监视磁盘 I/O 使用状况的 top 类工具。iotop 具有与 top 相似的 UI,其中包括 PID、用户、I/O、进程等相关信息。 其他命令mpstat、netstat、pidstat也是常用的,大家看相关手册学习。这里不再进行说明 总结linux的监控篇就分享这些,vmstat、sar必须掌握,至于top、free等简单命令,是基本的了,肯定是也要掌握的。不管怎么样,对于这些命令还是要多练习,多去把各个命令选项都用用,看看实际的输出,对分析下各个指标间的关系。 |
|