赞
踩
当用户cpu(us)占用长期超过50%,那么我们就该考虑优化程序算法或者进⾏升级cpu;
如果近段时间cpu突然异常升高,应该先排查导致升高的原因;
使用vmstat命令,Procs中r(运行中线程)长期大于1。
如果r经常⼤于4,id经常少于40,表示cpu的负荷很重。
如果bi,bo⻓期不等于0,表示内存不⾜。
如果disk经常不等于0,且在b中的队列⼤于3,表示io性能不好
当内存超过服务器内存占用长期超过80%的时候应该考虑升级内存。
占用IO过高,可以做以下考虑
可以通过本地ping服务器端口来查看网络延迟,或者使用curl模拟请求来查看服务的相应时间。
Linux中的top命令显示系统上正在运⾏的进程。它是系统管理员最重要的⼯具之⼀。被⼴泛⽤于监视服务器的负载。在本篇中,我们会探索top命令的细节。top命令是⼀个交互命令。在运⾏top的时候还可以运⾏很多命令。
使用方式
显示进程信息
top
显示指定的进程信息
top -p 139
//显示进程号为139的进程信息,CPU、内存占⽤率等
显示线程信息(线程信息可用于定位发生问题的具体位置)
shift + h 或 H
//显示线程信息,CPU、内存占⽤率等,可结合jstack堆栈日志,定位发生问题的具体位置
示例⼀:
Top命令输出,默认运⾏时,top命令会显示如下输出:
前⼏⾏⽔平显示了不同系统参数的概括,接下来是进程和它们在列中的属性。
1)系统运⾏时间和平均负载:
top命令的顶部显示与uptime命令相似的输出。
这些字段显示:
2)任务:
第⼆⾏显示的是任务或者进程的总结。进程可以处于不同的状态。这⾥显示了全部进程的数量。除
此之外,还有正在运⾏、睡眠、停⽌、僵⼫进程的数量(僵⼫是⼀种进程的状态)。这些进程概括信息
可以⽤’t’切换显示。
3)CPU 状态:
下⼀⾏显示的是CPU状态。 这⾥显示了不同模式下的所占CPU时间的百分⽐。这些不同的CPU时间
表示:
us, user: 运⾏(未调整优先级的) ⽤户进程的CPU时间sy,system: 运⾏内核进程的CPU时间
ni,niced:运⾏已调整优先级的⽤户进程的CPU时间
wa,IO wait: ⽤于等待IO完成的CPU时间
hi:处理硬件中断的CPU时间
si: 处理软件中断的CPU时间
st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于⼀个hypervisor下的vm,实
际上hypervisor也是要消耗⼀部分CPU处理时间的)。
可以使⽤’t’命令切换显示。
4)内存使⽤:
接下来两⾏显示内存使⽤率,有点像’free’命令。第⼀⾏是物理内存使⽤,第⼆⾏是虚拟内存使⽤
(交换空间)。
物理内存显示如下:全部可⽤内存、已使⽤内存、空闲内存、缓冲内存。相似地:交换部分显示的
是:全部、已使⽤、空闲和缓冲交换空间。
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进⾏监控。是对系统的整体情况进⾏统计,不⾜之处是⽆法对某个进程进⾏深⼊分析。怎样通过vmstat来发现系统中的瓶颈呢?在回答这个问题前,还是让我们回顾⼀下Linux中关于虚拟内存相关内容。
物理内存和虚拟内存区别
我们知道,直接从物理内存读写数据要⽐从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写⼊都在内存完成,⽽内存是有限的,这样就引出了物理内存与虚拟内存的概念。
物理内存就是系统硬件提供的内存⼤⼩,是真正的内存,相对于物理内存,在linux下还有⼀个虚拟内存的概念,虚拟内存就是为了满⾜物理内存的不⾜⽽提出的策略,它是利⽤磁盘空间虚拟出的⼀块逻辑内存,⽤作虚拟内存的磁盘空间被称为交换空间(Swap Space)。
⽤法
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
-a:显示活跃和⾮活跃内存
-f:显示从系统启动⾄今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示⼀次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示⼀条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为⽆穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使⽤指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节
(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。
示例⼀:
每3秒输出⼀条结果
字段说明:
Procs(进程):
r: 运⾏队列中进程数量,这个值也可以判断是否需要增加CPU。(⻓期⼤于1)
b: 等待IO的进程数量
Memory(内存):
swpd: 使⽤虚拟内存⼤⼩
注意:如果swpd的值不为0,但是SI,SO的值⻓期为0,这种情况不会影响系统性能。
free: 空闲物理内存⼤⼩
buff: ⽤作缓冲的内存⼤⼩
cache: ⽤作缓存的内存⼤⼩
注意:如果cache的值⼤的时候,说明cache处的⽂件数多,如果频繁访问到的⽂件都能被cache处,那
么磁盘的读IO bi会⾮常⼩。
Swap:
si: 每秒从交换区写到内存的⼤⼩,由磁盘调⼊内存
so: 每秒写⼊交换区的内存⼤⼩,由内存调⼊磁盘
注意:内存够⽤的时候,这2个值都是0,如果这2个值⻓期⼤于0时,系统性能会受到影响,磁盘IO和
CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够⽤了,不能
光看这⼀点,还要结合si和so,如果free很少,但是si和so也很少(⼤多时候是0),那么不⽤担⼼,系
统性能这时不会受到影响的。
IO:(现在的Linux版本块的⼤⼩为1kb)
bi: 每秒读取的块数
bo: 每秒写⼊的块数
注意:随机磁盘读写的时候,这2个值越⼤(如超出1024k),能看到CPU在IO等待的值也会越⼤。
系统:
in: 每秒中断数,包括时钟中断。
cs: 每秒上下⽂切换数。
注意:上⾯2个值越⼤,会看到由内核消耗的CPU时间会越⼤。
CPU(以百分⽐表示):us: ⽤户进程执⾏时间百分⽐(user time)
注意: us的值⽐较⾼时,说明⽤户进程消耗的CPU时间多,但是如果⻓期超50%的使⽤,那么我们就该
考虑优化程序算法或者进⾏加速。
sy: 内核系统进程执⾏时间百分⽐(system time)
注意:sy的值⾼时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
wa: IO等待时间百分⽐
注意:wa的值⾼时,说明IO等待⽐较严重,这可能由于磁盘⼤量作随机访问造成,也有可能磁盘出现
瓶颈(块操作)。
备注:
如果r经常⼤于4,id经常少于40,表示cpu的负荷很重。
如果bi,bo⻓期不等于0,表示内存不⾜。
如果disk经常不等于0,且在b中的队列⼤于3,表示io性能不好。
Linux在具有⾼稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应⽤和硬件环
境调整,优化出满⾜当前应⽤需要的最佳性能。因此企业在维护Linux系统、进⾏系统调优时,了解系
统性能分析⼯具是⾄关重要的。
示例⼆:
显示活跃和⾮活跃内存
使⽤-a选项显示活跃和⾮活跃内存时,所显示的内容除增加inact和active外,其他显示内容与例⼦1相同。
字段说明:
Memory(内存):
inact: ⾮活跃内存⼤⼩(当使⽤-a选项时显示)
active: 活跃的内存⼤⼩(当使⽤-a选项时显示)
示例三:
显示从系统启动⾄今的fork数量
vmstat -f 【 linux下创建进程的系统调⽤是fork】
说明**
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。