了瓶颈。
%irq:显示CPU处理硬件中断的百分比。
??说明:如果%irq较高,表示CPU正在处理大量硬件中断,可能是某个硬件设备出现了问题。
%soft:显示CPU处理软件中断的百分比。
??说明:如果%soft较高,表示CPU正在处理大量软件中断,可能是某个进程出现了问题或者某个内核模块在处理大量请求。
%steal:显示被虚拟机偷走的CPU时间的百分比。
%guest:显示虚拟机使用CPU的百分比。
%idle:显示CPU空闲的百分比。
??说明:如果%idle较低,表示CPU正在忙碌,可能是系统负载过高或者某个进程占用了大量CPU资源。
3、iostat工具
iostat主要监视磁盘I/O使用情况,包括每个磁盘的读写速度、I/O等待时间、I/O请求队列长度等,主要使用iostat工具来了解系统磁盘I/O使用情况,识别磁盘I/O瓶颈和瓶颈进程。
Device:sda1
r/s:458.09 # 表示每秒从设备中读取的次数。
rkB/s:56330.40 # 每秒读取的数据量,单位为KB。
rrqm/s:0.63 # 每秒从磁盘发出的读取请求队列的长度,单位为请求。
%rrqm:0.14 # 表示从磁盘发出的读取请求占总读取请求的百分比。
r_await:4.17 # 表示读操作的平均等待时间,单位为毫秒。
rareq-sz:122.97 # 平均每个读取请求的数据量,单位为扇区
w/s:67.28 # 表示每秒向设备中写入的次数。
wkB/s:788.53 # 每秒钟写的数量,单位是kb
wrqm/s:54.32 # 每秒从磁盘发出的写入请求队列的长度,单位为请求
%wrqm:44.67 # 表示从磁盘发出的写入请求占总写入请求的百分比。
w_await:6.75 # 表示写操作的平均等待时间,单位为毫秒。
wareq-sz:11.72 # 平均每个写入请求的数据量,单位为扇区
d/s:0.00
dkB/s:0.00
drqm/s :0.00
%drqm:0.00
d_await:0.00
dareq-sz :0.00
aqu-sz :2.37 # 请求队列的平均长度。
%util:96.96 # 表示磁盘花费在处理请求的时间百分比 经常超过80%或90%,则说明磁盘正在高负载下运行
总结:
当 r/s
和 w/s
、rkB/s
和 wkB/s
、r_await
和 w_await
等指标的值都很大,并且 %util
的值也很高时,可以初步判断磁盘可能存在性能问题。
4、sar工具:
相比于vmstat和pmstat,star工具提供了更全面的系统性能监控和历史数据分析功能。可以将输出的信息重定向到一个文件里面,便于后续的分析。
(1)查看CPU的使用情况:
# %user:用户空间进程所占用CPU时间的百分比。
# %nice:被nice值提高的用户空间进程所占用CPU时间的百分比。
# %system:内核空间进程所占用CPU时间的百分比。
# %iowait:CPU等待I/O操作完成所占用CPU时间的百分比。
# %steal:被虚拟化程序(如VMware)偷走的CPU时间的百分比。
# %idle:CPU空闲时间的百分比。
- 如果
%user和%system
占用率较高,可能表示系统负载较高,需要进一步检查进程、IO等情况。
- 如果%iowait占用率较高,可能表示IO瓶颈
- 如果%idle占用率较高,可能表示系统资源未充分利用
(2)监视内存使用情况:
# kbmemfree:可用内存大小(单位:KB)
# kbmemused:已用内存大小(单位:KB)
# %memused:已用内存占总内存的百分比
# kbbuffers:缓存的内存大小(单位:KB)
# kbcached:缓存的文件系统缓存大小(单位:KB)
# kbcommit:提交内存大小(单位:KB)
# %commit:提交内存占总内存的百分比
# kbactive:活跃内存大小(单位:KB)
# kbinact:非活跃内存大小(单位:KB)
# kbdirty:脏页的内存大小(单位:KB)
- 如果可用内存(
kbmemfree
)较少,已用内存(kbmemused
)和已用内存占总内存的百分比(%memused
)较高,可能表示内存不足
- 如果缓存的内存(
kbbuffers
)和缓存的文件系统缓存(kbcached
)较高,可能表示系统的文件系统缓存良好
- 如果提交内存(
kbcommit
)较高,可能表示应用程序提交的内存较多
- 如果活跃内存(
kbactive
)和非活跃内存(kbinact
)较高,可能表示系统当前运行的应用程序较多
(3)监视磁盘I/O使用情况:
# tps:每秒传输的I/O请求数(包括读写请求)
# rtps:每秒读请求传输的I/O请求数
# wtps:每秒写请求传输的I/O请求数
# bread/s:每秒读取的数据块数量(单位:512字节)
# bwrtn/s:每秒写入的数据块数量(单位:512字节)
- 如果
tps
较高,可能表示磁盘I/O瓶颈
- 如果
rtps或wtps
较高,可以进一步确认是读操作或写操作的问题
- 如果
bread/s或bwrtn/s
较高,可能表示磁盘I/O
吞吐量不足
(4)查看网络的基本信息:DEV
主要查看的是接收和发送数据包的速率、接收和发送数据量的速率
# IFACE:网络接口名称。
# rxpck/s:每秒接收的数据包数量。
# txpck/s:每秒发送的数据包数量。
# rxkB/s:每秒接收的数据量(KB)。
# txkB/s:每秒发送的数据量(KB)。
# rxcmp/s:每秒接收的压缩数据包数量。
# txcmp/s:每秒发送的压缩数据包数量。
# rxmcst/s:每秒接收的多播数据包数量。
-
如果rxkB/s
和txkB/s
非常高,但%ifutil
非常低,则可能存在网络拥塞的问题
-
如果rxcmp/s
和txcmp/s
非常高,可能存在数据压缩的问题。
-
如果rxmcst/s
非常高,可能存在多播网络流量的问题。
数据压缩:为了减少数据的传输量,可以对数据进行压缩。压缩的过程是将原始数据使用某种压缩算法进行编码,使其占用更少的带宽。
(5)查看网络的错误信息EDEV
可以查看网络设备的错误和丢包数。
# rxerr/s:每秒接收的错误数。
# txerr/s:每秒发送的错误数
# coll/s:每秒发生的冲突数。
# rxdrop/s:每秒接收的丢包数
# txdrop/s:每秒发送的丢包数。
# txcarr/s:每秒发生的载波错误数。
# rxfram/s:每秒接收的帧错误数。
# rxfifo/s:每秒钟由于接收FIFO队列溢出而丢失的数据包数。
# txfifo/s:每秒钟由于发送FIFO队列溢出而丢失的数据包数。
rxerr/s
或rxdrop/s
的值很高,可能存在网络中的接收问题,例如硬件故障或网络拥塞等。
txerr/s
或txdrop/s
的值很高,可能存在网络中的发送问题,例如硬件故障或网络拥塞等
coll/s
的值很高,可能存在网络中的冲突问题,例如网络中存在多个设备尝试同时发送数据包/
使用场景总结:
- 需要实时监控系统资源,可以使用 vmstat 和 iostat
- 需要对系统历史性能进行分析,可以使用 sar
- 分布式系统中进行性能分析和监控,则可以选择 pmstat,因为分布式系统的性能监控比较复杂,pmst