常见的性能分析工具
计算机系统由4个模块组成,分别是CPU,网络,磁盘,内存。在程序或者系统出现问题时,应该按照一定的先后顺序镜像排查。并且查看他们当前的使用状况。
vmstat命令
常见的Linux/UNIX监控工具,可以通过给定时间间隔来展示服务器的状态,包括CPU使用率,内存使用率,虚拟内存交换情况,I/O读写情况。相比top,用户可以看到整个机器CPU,内存,I/O的使用情况。
yum install -y sysstat #安装vmstat #直接输入命令查看信息vmstat 2 #每两秒采集一次,通过Ctrl+C退出

procs
r:等待运行的进程数,多少个进程分到了CPU,一般不超过CPU个数是正常的值 b:处于非中断睡眠状态的进程数,即在等待资源分配的进程数,阻塞状态(等待IO)
memory:swpd列显示了多少块被换出的磁盘(页面交换),剩下的列显示了多少块是空闲的,多少块正在被用作缓冲区,多少块正在被用作操作系统的缓存
swpd:虚拟内存已经使用的大小,如果大于0,表示机器的物理内存不足,如果不是程序内存泄露的原因,那么就要升级内存或者把消耗内存的任务迁移到其他机器 free:空闲的物理内存的大小 buff:用作缓存的内存数,缓存是文件目录基本内容,在磁盘中的位置,权限等 cache:用作文件缓存的内存数,对打开的文件进行缓存,提高执行效率和使用性能
swap:显示交换活动:每秒有多少块正在被换入(从磁盘)和换出(到磁盘)
si:从磁盘交换到内存的交换页数量,即每秒使用的虚拟内存数量 so:从内存交换到磁盘的交换页数量
io:显示了多少块从设备读取(bi)和写出(bo),通常反映了硬盘的IO
bi:发送到块设备,一般为硬盘的块数 bo:从块设备接收到的块数
system:显示每秒中断in和上下文切换cs的位置
in:每秒中断次数,包括时钟中断 cs:每秒上下文切换的次数
cpu:显示所有CPU时间花费在各类操作的百分比,包括执行用户代码,执行系统代码,空闲以及等待I/O
us:用户CPU使用时间 sy:系统CPU使用时间,如进行I/O操作等 id:空闲时间 wt:等待I/O的CPU时间,一般为0
sar系统活动取样命令
Linux全面的系统性能分析工具之一,可以从多方面对系统活动进行报告,包括文件的读写情况,系统调用的使用情况,磁盘I/O,CPU效率,内存使用情况,进程活动和IPC有关活动等。获得的数据结果可以存入文件,并且所需负载很小。
查看内存使用率
sar -r 1 3

- kkbmemfree:可用的空闲内存大小
- kbmemused:已使用的内存大小(不包含内核使用的内存)
- %memused:已使用内存的百分数
- kbbuffers :内核缓冲区(buffer)使用的内存大小
- kbcached :内核高速缓存(cache)数据使用的内存大小
- kbswpfree :可用的空闲交换空间大小
- kbswpused:已使用的交换空间大小
- %swpused:已使用交换空间的百分数
- kbswpcad :交换空间的高速缓存使用的内存大小
- kbcommit 保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区)
- commit 这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值
查看CPU使用率
可以在日志文件/var/log/sysstat
sar -u 2 1

- %user #用户空间的CPU使用
- %nice 改变过优先级的进程的CPU使用率
- %system 内核空间的CPU使用率
- %iowait CPU等待IO的百分比
- %steal 虚拟机的虚拟机CPU使用的CPU
- %idle 空闲的CPU
- 在以上的显示当中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。
iostat 性能分析命令
用于报告CPU统计信息和整个系统,适配器、tty设备、磁盘和CD-ROM的输入/输出统计信息,默认显示与vmstat相同的CPU使用信息
命令效果显示
iostat

- %user:cpu处在用户模式下的时间百分比
- %nice:cpu处在NICE至的用户模式下的时间百分比
- %system:xpu处在系统模式下的时间百分比
- %iowait:cpu等待输入输出完成时间段哦百分比
- %steal:虚拟cpu的无意识等待时间百分比
- %idle:cpu空闲时间百分比
显示磁盘的详细信息
iostat -d -x -k 1 10-x:显示详细信息-k:以KB为单位显示-d:显示磁盘使用情况

- 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操作的等待时间 (毫秒)。
- svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
- %util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
top 性能监控命令

内部命令
- S:改变画面更新频率
- i:开启或关闭第一部分第一行top信息的表示
- t:开启或关闭第一部分第二行Tasks和第三行CPUS信息的表示
- m:开启或关闭第一部分第四行Mem和第五行Swap信息的表示
- N:以PID大小的顺序排列表示进程列表
- P:以CPU占用率大小的顺序排列进程表
- M:以内存占用率大小的顺序排列进程列表
- h:显示帮助
- n:在进程列表所显示进程的数量
- q:退出top
- s:改变画面更新周期
htop top的升级版
简介
大家可能对top监控软件比较熟悉,今天我为大家介绍另外一个监控软件Htop,姑且称之为top的增强版,相比top其有着很多自身的优势。如下:
- 两者相比起来,top比较繁琐
- 默认支持图形界面的鼠标操作
- 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行
- 杀进程时不需要输入进程号等
安装
yum install -y htop #安装工具包
使用
htop #即可进入htop界面

以上各项分别为:
- PID:进行的标识号
- USER:运行此进程的用户
- PRI:进程的优先级
- NI:进程的NICE值,默认的为0,可以进行调整
- VIRT:进程占用的虚拟内存值
- RES:进程占用的物理内存值
- SHR:进程占用的共享内存值
- S:进程的运行状况,R表示正在运行、S表示休眠,等待唤醒、Z表示僵死状态
- %CPU:该进程占用的CPU使用率
- %MEM:该进程占用的物理内存和总内存的百分比
- TIME+:该进程启动后占用的总的CPU时间
- COMMAND:进程启动的启动命令名称
热键

Htop设定
鼠标点击或者按下F2

可以对排列样式,颜色,显示信息进行更改。
ps实时监控系统命令
检测后台程序的占用情况
ps命令显示进程的状态,但不是动态连续的。ps命令是强大的进程查看命令。使用该命令可以确定进程运行的状态,进程是否结束,有没有僵尸进程,那些进程占用了过多的资源。
-a:显示同一终端下的所有程序-u:uid or username 选择有效的用户ID或者是用户名-x:显示没有控制终端的进程,同时显示各个命令的具体路径,dx不可一起用
ps -axu
-e:显示所有进程-f:全部列出,通常和其他选项一起连用
ps -ef
netstat 监控网络状态命令
查看正在监听的进程,端口号,TCP/UDP服务。
netstat是控制台命令,是一款监控TPC/IP网络的工具,它可以显示路由表,实际的网络连接以及每一个网络接口设备的状态信息。netstat用于显示与TCP IP UDP ICMP相关的统计数据,一般用于检验本机各端口的网络连接情况。
最常用的命令-n:以网络IP地址代替名称,显示出网络连接情形-t:显示TCP连接的情况-l:显示正在监听的端口进程-p:显示建立相关连接的程序名和PID-u:显示UDP协议的连接情况-a:显示所有套接字
netstat -ntlpua
显示所有端口统计信息
netstat -s
显示所有监听unix端口
netstat -lx
显示路由信息
netstat -r
显示网络接口列表
netstat -i
