linux性能监控命令
linux性能监控命令
vmstat
可以用来监控虚拟内存。可对操作系统的虚拟内存、IO、CPU等多个指标的整体情况进行监视。
Linux系统的内存分为物理内存和虚拟内存两种。物理内存是真实的,也就是物理内存条上的内存。而虚拟内存则是采用硬盘空间补充物理内存,将暂时不使用的内存页写到硬盘上以腾出更多的物理内存让有需要的进程使用。当这些已被腾出的内存页需要再次使用时才从硬盘(虚拟内存)中读回内存。这一切对于用户来说是透明的。通常对Linux系统来说,虚拟内存就是swap分区。
image.png
内存方面:
swpd:已经使用的交换内存(kb)
free:空闲的物理内存(kb)
buff:用作缓冲区的内存数(kb)
cache:用作高速缓存的内存数(kb)
si、so 两列,表示磁盘和内存之间交换的频繁程度。
分析思路:
如果 si、so 数值长期很大并且free长期很小,表示物理内存不能满足需要,也就是内存不足。由于磁盘的性能比内存是慢很多的,所以如果存在大量的页面交换,那么系统的性能必然会受到很大影响。
CPU方面:
r:展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
us:用户CPU时间。
sy:系统CPU时间。
id:空闲CPU时间。
wa:等等I/O CPU时间。
us+sy+id+wa=100%
分析思路:
如果 r 经常大于4,且id经常小于40,表面CPU的负荷很重。
free
可以用来观察内存使用情况。
image.png
total= used + free
分析思路:
当 –/+ buffers/cache中的free长时间接近0,且 swap used长时间比较大时,说明物理内存已经不够用了,需要升级内存或降低内存的使用量。
iostat
可以用来监控磁盘I/O的情况。
image.png
显示结果为从系统开机到当前执行时刻的统计信息。
第一行显示系统版本、主机名、日期等信息。
avg-cpu:显示总体CPU使用情况统计信息。如果是多核CPU的话,这里取平均值。
Device: 显示各磁盘设备的IO统计信息。
主要关注点:
avg-cpu 的 %iowait:表明CPU用于等待I/O请求完成的时间。
Device 的 tps:每秒进程下发的I/O读写请求数量。
显示和I/O相关的更详细的数据。
主要关注点:
avgqu-sz:是平均请求队列的长度。毫无疑问,队列长度越短越好。
await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长, 系统上运行的应用程序将变慢。
%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
分析思路:
如果%util值长期处于100%左右,并且avgqu-sz的值比较大,同时await的值远大于svctm,可以认为磁盘的处理能力不够。
如果只有一个指标持续走高,需要结合mem指标来看,是否是由于内存空间不够导致磁盘的使用增加。
top
可以实时显示系统中各个进程的占用情况。
image.png
上部分列出了系统整体的统计信息:任务、CPU、内存、交换区等信息。
下部分列出了进程的详细情况。
uptime
可以查看系统负载。显示的和top命令第一行一样。
image.png
当前时间
系统已运行时间
当前在线用户
平均负载:一定时间内CPU任务队列的平均长度,是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息。上面3个数分别是——最近一分钟系统的负载、最近5分钟系统的负载、最近15分钟系统的负载
ps
查看所有进程
image.png
netstat
这个命令用来查看当前建立的网络连接(深刻理解netstat每一项代表的含义)。最经典的案例就是查看本地系统打开了哪些端口:
image.png