一 、系统层面
1 df -h 检查磁盘空间
如果文件系统的剩余空间过小或增长较快,需对其进行确认并删除不用的文件以释放空间。

2 检查cpu使用情况


3 检查内存sar -r 2 3

此输出结果中,各个参数表示的含义如下:
kbmemfree:表示空闲的物理内存的大小;
kbmemeused:表示已使用的物理内存的大小;
%memused:表示已使用内存占总内存大小的百分比;
kbbuffers:表示缓冲区所使用的物理内存的大小;
kbcached:表示告诉缓存所使用的物理内存的大小;
kbcommit 和 %commit:分别表示当前系统中应用程序使用的内存大小和百分比;
4 查看系统负载uptime
![]()
发现系统超负载
根据上述平均负载的定义,能够导致平均负载升高的场景有:
1、处于Running状态的进程大量消耗cpu(CPU密集型进程)
2、大量处于Runnable的进程,cpu会频繁进行上下文切换(寄存器、程序计数器)
4.1 分析cpu命令mpstat -P ALL 1

CPU 的用户层(%usr)使用率;
CPU 的系统层(%sys)使用率;
CPU 的 I/0 - 等待(%iowait)占用率;
CPU 的空闲率(%idle)
看到有一个 CPU 的使用率为 100%,但它的 iowait 只有 0。这说明,平均负载的升高正是由于 CPU 使用率为 100% 。
通过pidstat查询到哪个进程导致cpu使用率100%
![]()

查到有三个进程cpu使用率过高
4.2 查看系统负载vmstat

r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
cpu 表示cpu的使用状态
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
id 列显示了cpu处在空闲状态的时间百分比
system 显示采集间隔内发生的中断数
in 列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
memory
swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
free 当前的空闲页面列表中内存数量(k表示)
buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
swap
si 由内存进入内存交换区数量。
so由内存交换区进入内存数量。
IO
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
bo 块设备写入数据的总量(写磁盘)(每秒kb)
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
该部分原文链接:https://blog.youkuaiyun.com/gu_study/article/details/81942939
4.3 查看磁盘负载

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait.
4.4 ps -axjf 查看是否存在 D 状态进程。

stat 中的参数意义如下: D 不可中断 Uninterruptible(usually IO) R 正在运行,或在队列中的进程 S 处于休眠状态 T 停止或被追踪 Z 僵尸进程 W 进入内存交换(从内核2.6开始无效) X 死掉的进程
无D进程,证明不是D进程导致负载过高
4.5 解决方法1 :使用top直接终止cpu消耗大的进程。
5 查看系统日志![]()
var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息

本文详述了如何检查和分析系统层面的磁盘空间、CPU使用、内存和负载,以及数据库层面的状况,包括数据库状态、归档日志、表空间使用、异常扩展的对象、系统表空间内容、对象的下一扩展、表空间状态、数据文件状态、无效对象、会话连接数和对象状态。通过对各项指标的监控和诊断,可以有效识别和解决性能问题。
最低0.47元/天 解锁文章
3825

被折叠的 条评论
为什么被折叠?



