性能测试监控经常使用命令(大全)

 1.free命令详解

 

-b:以Byte为单位显示内存使用状况;
-k:以KB为单位显示内存使用状况;
-m:以MB为单位显示内存使用状况;
-o:不显示缓冲区调节列;
-s<间隔秒数>:持续观察内存使用情况;
-t:显示内存总和列;
-V:显示版本信息

第一部分Mem行解释:

total:内存总数;
used:已经使用的内存数;
free:空闲的内存数;
shared:当前已经废弃不用;
buffers Buffer:缓存内存数;
cached Page:缓存内存数。

2 VMSTAT
2表示每一个两秒采集一次服务器状态,1表示只采集一次

r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,通常负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载相似每秒的运行队列。若是运行队列过大,表示你的CPU很繁忙,通常会形成CPU使用率很高。node

 
 

b 表示阻塞的进程,这个很少说,进程阻塞,你们懂的。ios

 
 

swpd 虚拟内存已使用的大小,若是大于0,表示你的机器物理内存不足了,若是不是程序内存泄露的缘由,那么你该升级内存了或者把耗内存的任务迁移到其余机器。nginx

 
 

free   空闲的物理内存的大小,个人机器内存总共8G,剩余3415M。web

 
 

buff   Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多Mapache

 
 

cache cache直接用来记忆咱们打开的文件,给文件作缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来作文件和目录的缓存,是为了提升 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)缓存

 
 

si  每秒从磁盘读入虚拟内存的大小,若是这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。个人机器内存充裕,一切正常。服务器

 
 

so  每秒虚拟内存写入磁盘的大小,若是这个值大于0,同上。网络

 
 

bi  块设备每秒接收的块数量,这里的块设备是指系统上全部的磁盘和其余块设备,默认块大小是1024byte,我本机上没什么IO操做,因此一直是0,可是我曾在处理拷贝大量数据(2-3T)的机器上看过能够达到140000/s,磁盘写入速度差很少140M每秒并发

 
 

bo 块设备每秒发送的块数量,例如咱们读取文件,bo就要大于0。bi和bo通常都要接近0,否则就是IO过于频繁,须要调整。ssh

 
 

in 每秒CPU的中断次数,包括时间中断

 
 

cs 每秒上下文切换次数,例如咱们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,咱们通常作性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程能够由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,咱们的代码就会进入内核空间,致使上下文切换,这个是很耗资源,也要尽可能避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,致使CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

 
 

us 用户CPU时间,我曾经在一个作加密解密很频繁的服务器上,能够看到us接近100,r运行队列达到80(机器在作压力测试,性能表现不佳)。

 
 

sy 系统CPU时间,若是过高,表示系统调用时间长,例如是IO操做频繁。

 
 

id  空闲 CPU时间,通常来讲,id + us + sy = 100,通常我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

 
 

wt 等待IO CPU时间。

 

3. sar命令详解

Sar -help

A:全部报告的总和

-u:输出CPU使用状况的统计信息

-v:输出inode、文件和其余内核表的统计信息

-d:输出每个块设备的活动信息

-r:输出内存和交换空间的统计信息

-b:显示I/O和传送速率的统计信息

-a:文件读写状况

-c:输出进程统计信息,每秒建立的进程数

-R:输出内存页面的统计信息

-y:终端设备活动状况

-w:输出系统交换活动信息

 

CPU资源监控

每隔10秒采集样本一次采集3次后生成test的一个文件,若是要查看二进制文件test中的内容,需键入以下sar命令:sar -u -f test
 

 all:全部的cpu
 user:用户的级别运行使用 CPU 总时间的百分比。

 nice:用于nice操做,所占用 CPU 总时间的百分比

system:系统所占cpu的百分比

iowait:IO所占cpu的百分比

steal:管理程序(hypervisor)为另外一个虚拟进程提供服务而等待虚拟 CPU 的百分比。

idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

1. 若 %iowait 的值太高,表示硬盘存在I/O瓶颈

2. 若 %idle 的值高但系统响应慢时,有多是 CPU 等待分配内存,此时应加大内存容量

3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,代表系统中最须要解决的资源是 CPU 。

 

 

2. inode、文件和其余内核表监控(我理解文件数量)

每10秒采样一次,连续采样3次,观察核心表的状态,需键入以下命令:

sar -v 10 3

屏幕显示以下:

17:10:49 dentunusd file-nr inode-nr pty-nr

17:10:59 6301 5664 12037 4

17:11:09 6301 5664 12037 4

17:11:19 6301 5664 12037 4

Average: 6301 5664 12037 4

输出项说明:

dentunusd:目录高速缓存中未被使用的条目数量

file-nr:文件句柄(file handle)的使用数量

inode-nr:索引节点句柄(inode handle)的使用数量

pty-nr:使用的pty数量

3. 内存和交换空间监控

例如,每10秒采样一次,连续采样3次,监控内存分页:

sar -r 10 3

屏幕显示以下:

输出项说明:

kbmemfree:这个值和free命令中的free值基本一致,因此它不包括buffer和cache的空间.

kbmemused:这个值和free命令中的used值基本一致,因此它包括buffer和cache的空间.

%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.

kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.

kbcommit:保证当前系统所须要的内存,即为了确保不溢出而须要的内存(RAM+swap).

%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.

 

4. iostat 命令详解

  • -C 显示CPU使用状况
  • -d 显示磁盘使用状况
  • -k 以 KB 为单位显示
  • -m 以 M 为单位显示
  • -N 显示磁盘阵列(LVM) 信息
  • -n 显示NFS 使用状况
  • -p[磁盘] 显示磁盘和分区的状况
  • -t 显示终端和CPU的信息
  • -x 显示详细信息
  • -V 显示版本信息

查看设备使用率(%util)和响应时间(await)

  • rrqm/s: 每秒进行 merge 的读操做数目.即 delta(rmerge)/s
  • wrqm/s: 每秒进行 merge 的写操做数目.即 delta(wmerge)/s
  • r/s: 每秒完成的读 I/O 设备次数.即 delta(rio)/s
  • w/s: 每秒完成的写 I/O 设备次数.即 delta(wio)/s
  • rsec/s: 每秒读扇区数.即 delta(rsect)/s
  • wsec/s: 每秒写扇区数.即 delta(wsect)/s
  • rkB/s: 每秒读K字节数.是 rsect/s 的一半,由于每扇区大小为512字节.(须要计算)
  • wkB/s: 每秒写K字节数.是 wsect/s 的一半.(须要计算)
  • avgrq-sz:平均每次设备I/O操做的数据大小 (扇区).delta(rsect+wsect)/delta(rio+wio)
  • avgqu-sz:平均I/O队列长度.即 delta(aveq)/s/1000 (由于aveq的单位为毫秒).
  • await: 平均每次设备I/O操做的等待时间 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)
  • svctm: 平均每次设备I/O操做的服务时间 (毫秒).即 delta(use)/delta(rio+wio)
  • %util: 一秒中有百分之多少的时间用于 I/O 操做,或者说一秒中有多少时间 I/O 队列是非空的,即 delta(use)/s/1000 (由于use的单位为毫秒)

 5 netstat 命令详解

1.netstat  -help(自行查看)

我的经常使用的:

netstat -c>>log.log  持续输出相关信息 放到文件里方便查看 

netstat -an | grep ssh  , netstat -ap | grep  '22'     关于网络方面的查看均可以使用 netsta进行查看,包括网络堵塞,网络接口,

相关文章
相关标签/搜索