性能测试过程中最重要的一个部分是资源监控,有针对性的采集测试数据,才能做出更合理的结果分析,有利于查找系统瓶颈从而进行有效的性能优化。就Linux系统而言,性能测试过程中需要监控的系统指标主要包含:CPU、内存、磁盘和网络。通过学习网上各路大神的分享,总结记录了以下几个Linux系统资源监控相关的命令。

服务器CPU监控

查看服务器CPU配置

1、查看物理cpu个数,sort 每行按assic码排序后展示,uniq 忽略重复行

cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l

2、查看每个物理CPU中的core个数

cat /proc/cpuinfo |grep "cpu cores"|wc -l

3、查看逻辑CPU个数

cat /proc/cpuinfo |grep "processor"|wc -l

查看服务器CPU使用情况

查看CPU使用情况的常用命令如下:

1、 top

top #按1查看每个逻辑cpu的情况,再按1返回

top -d 2 -n 5 -b     # -d每隔2s打印,-n循环打印5次,-b以批处理模式逐一显示结果

2、 vmstat

vmstat   2 5     #每隔2s打印,打印5次,-t则显示时间

输出项说明:

  • us: 在指定时间间隔内CPU在用户态的利用率。
  • sy: 在指定时间间隔内CPU在核心态的利用率。
  • id: 在指定时间间隔内CPU空闲时间比。
  • wa: 在指定时间间隔内CPU因为等待I/O而空闲的时间比。

3、 iostat

iostat -c 1 5     #每隔1s打印,打印5次

输出项说明:

  • %user:CPU处在用户模式下的时间百分比。
  • %nice:CPU处在带NICE值的用户模式下的时间百分比。
  • %system:CPU处在系统模式下的时间百分比。
  • %iowait:CPU等待输入输出完成时间的百分比。
  • %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
  • %idle:CPU空闲时间百分比。

4、 sar

sar 3 2   #每隔3s打印,打印2次

输出项说明:

  • CPU:all表示统计信息为所有CPU的平均值。
  • %usr:CPU在用户态执行进程的时间百分比。
  • %nice:CPU在用户态模式下,用于nice操作,所占用CPU总时间的百分比。
  • %system:CPU处在内核态执行进程的时间百分比。
  • %iowait:CPU用于等待I/O操作占用CPU总时间的百分比。 若 %iowait 的值过高,表示硬盘存在I/O瓶颈 ;
  • %steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比。
  • %idle:CPU空闲时间百分比。 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量 。若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU;

服务器内存监控

查看服务器内存

1、 查看服务器内存信息

cat  /proc/meminfo

2、 free

free  -m
free  -g

total=used+free+buff/cache

  • total:内存总数,系统刨去bios等保留的内存、内核保留的内存,剩下的就是total内存;
  • free:空闲内存,查看可用内存,free内存至少>=1/2的total内存
  • buff/cache:虽然被使用,但是有可以回收部分,所以也可以算是空闲内存;

查看服务器内存使用情况

1、 查看某个进程占用内存情况

memstat -p [pid]

2、 sar

sar -r 2 3

输出项说明:

  • kbmemfree: 可用的空闲内存,单位是KB,约等于free(free命令)
  • kbmemused: 已经使用的内存,这个没有考虑内核自己用到的内存,约等于used+buff/cache(free命令)
  • %memused: 目前内存的使用率
  • kbbuffers: 内核缓冲区(buffer)使用的内存数量,单位为 KB
  • kbcached: 内核高速缓存(cache)数据使用的内存数量,单位为 KB
  • kbcommit: 当前工作负载锁需要的内存,这是一个估计值,多少RAM/swap可以保证当前负载不会出现out of memory
  • %commit: 当前工作负载需要的内存占RAM+swap的百分比
  • kbactive: 活跃内存的大小(内存最近被使用过,并且不会被回收)
  • kbinact: 不活跃内存大小(最近未被使用的内存,很符合回收策略的内存)
  • kbdirty: 等待写回硬盘的内存数量

另外,查看内存分页命令:

sar -B 2 2     #每隔2s,打印2次,监控内存分页

输出项说明:

  • pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
  • pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
  • fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
  • majflt/s:每秒钟产生的主缺页数.
  • pgfree/s:每秒被放入空闲队列中的页个数
  • pgscank/s:每秒被kswapd扫描的页个数
  • pgscand/s:每秒直接被扫描的页个数
  • pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数
  • %vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

3、vmstat

vmstat 2 5      #每隔2s打印,打印5次

输出项说明:

  • si: 交换内存使用,由交换区调入内存,每秒传输的大小。
  • so: 交换内存使用,由内存调入交换区,每秒传输的大小。 内存充足时si、so长期为0,当si、so长期大于0时表明系统性能受影响。当内存使用率较高,但是si、so长期为0,则内存足够。

服务器磁盘分析

1、查看磁盘和分区

fdisk -l

2、查看文件系统磁盘占用情况

df  -h

3、查看某个目录的大小

du -sh  /home
du -cksh *|sort -r|head -n 10   #找出当前目录下,占用空间最大的前10个目录,sort -r 降序排列

4、查看磁盘相关信息

iostat -x 2 3 
iostat -x -d sda  2 3   #指定磁盘sda

输出项说明:

  • rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
  • wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
  • r/s: 每秒完成的读 I/O 设备次数。即 rio/s
  • w/s: 每秒完成的写 I/O 设备次数。即 wio/s
  • rsec/s: 每秒读扇区数。即 rsect/s
  • wsec/s: 每秒写扇区数。即 wsect/s
  • rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
  • wkB/s: 每秒写K字节数。是 wsect/s 的一半。
  • avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
  • avgqu-sz: 平均I/O队列长度。
  • await: 平均每次设备I/O操作的等待时间 (毫秒)。await值取决svctm和I/O队列长度以及I/O请求模式,如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。
  • svctm: 平均每次设备I/O操作的服务时间 (毫秒)。正常svctm应小于await值,而svctm和磁盘性能有关,CPU、内存负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加。
  • %util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比。如%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

服务器网络分析

1、查看网卡流量

sar -n DEV 1 1

输出项说明:

  • IFACE:LAN接口
  • rxpck/s:每秒钟接收的数据包
  • txpck/s:每秒钟发送的数据包
  • rxbyt/s:每秒钟接收的字节数
  • txbyt/s:每秒钟发送的字节数
  • rxcmp/s:每秒钟接收的压缩数据包
  • txcmp/s:每秒钟发送的压缩数据包
  • rxmcst/s:每秒钟接收的多播数据包

2、网络性能评估

  1. 通过ping命令检测网络的连通性
  2. 通过netstat –i组合检测网络接口状况
  3. 通过netstat –r组合检测系统的路由表信息
  4. 通过sar –n组合显示系统的网络运行状态

监控工具nmon

1、安装nmon

apt-get install nmon

2、使用nmon

nmon -s2 -c1200 -f /home/   #启动新的nmon,2s刷新一次屏幕,一共刷新1200次,nmon运行2*1200s
ps -ef|grep nmon #查看nmon
ps -ef|grep nmon|awk '{print$2}'|xargs kill -9#停止已经启动的nmon

3、使用nmon analyser.xlsm打开nmon文件,根据获取的数据自动生成图表,CPU、内存、磁盘等信息一目了然。 

java api监控linux硬盘 linux监控资源_服务器