服务器使用率高处理思路

通过 top 可以快速判断:

· 内存问题:看 free 内存和 swap used

· CPU 问题:看 id 空闲率和 us/sy 使用率

· 磁盘 I/O 问题:看 wa 等待率和 D 状态进程

经验法则:

· wa > 10% = 磁盘 I/O 瓶颈

· id < 20% = CPU 资源紧张

· swap used > 0 = 内存压力

· load average > CPU核心数 = 系统过载

一、服务器负载高

系统负载(load average)反映的是等待CPU资源的进程数量,而不仅仅是CPU的使用率。高负载可能由CPU、内存或I/O瓶颈引起。

定义:单位时间内,处于运行状态或不可中断睡眠状态(如等待磁盘 I/O)的进程数量的平均值。

查看指令:uptime && top

输出:load average: 0.65, 0.72, 0.80

最近1分钟、5分钟、10分钟的平均负载

判断标准:负载值<CPU核心数------>正常

负载值>CPU核心数------>系统可能过载

查看CPU核心数:nproc 或者 lscpu | grep "CPU(s)"

举例:

$ uptime

14:30:10 up 10 days, 1:20, 1 user, load average: 6.20, 5.90, 5.75

$ nproc

4

服务器是 4 核 CPU,而1分钟负载已经是 6.20,说明系统过载。

二、CPU使用率过高判断

查看指令 top && nproc &&lscpu

重点关注:

● %Cpu(s) 行:查看 us(用户态 CPU 占用)、sy(系统态 CPU 占用)

● us + sy 如果 > 80%,说明 CPU 是瓶颈

%Cpu(s): 85.3 us, 10.2 sy, 0.0 ni, 3.1 id, 0.5 wa, 0.0 hi, 0.9 si, 0.0 st

us+sy=85.3+10.2=95.5>80,说明cpu使用率过大。

三、I/O过高导致(wa高)

查看指令:top && iostat

观察 top 中的 %Cpu(s) 行中的 wa(iowait):

■ 问题:wa>10%:有一定I/O等待,需要关注

■ 严重:wa> 20%:说明系统有大量 I/O 等待

■ 可能是磁盘读写、数据库操作、文件拷贝等导致

%C pu(s): 5.3 us, 2.1 sy, 0.0 ni, 70.2 id, 22.3 wa, 0.0 hi, 0.1 si, 0.0 st在 top 在top中查找 D 状态进程:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

7890 backup 20 0 1.2g 800m 100m D 0.0 5.0 1:23:45 /bin/tar -czf backup.tar.gz

7891 mysql 20 0 8.5g 3.2g 1.2g D 15.2 20.0 0:45:23 /usr/sbin/mysqld

D 状态 = 不可中断睡眠 = 进程正在等待磁盘I/O

wa是CPU等待I/O操作完成的时间百分比。wa为22.3,I/O等待严重。进程中状态S有D状态,说明进程在等待。

补充说明:

wa过高可以分为两类:

①内存不足导致的wa高

判断:内存不足------>频繁SWAP------>磁盘I/O增加------>wa升高

②纯磁盘I/O瓶颈

判断:内存充足,但wa高------>真正的磁盘性能瓶颈。

2、使用 iostat 查看具体磁盘 I/O 情况(需安装 sysstat)

iostat -x 1 3

重点关注:

● %util:磁盘使用率,接近 100% 表示磁盘繁忙

● await:I/O 请求平均等待时间,数值大说明磁盘慢

四、内存不足

查看指令: free -g && top

重点关注:

● available 是否低于总内存 10%

● Swap 是否在持续增长(使用 vmstat 1)

五、使用 vmstat 查看内存和 I/O 综合情况

查看指令:vmstat 1 5

重点关注:

● si(swap in)和 so(swap out)是否大于 0

● wa 是否大(I/O 等待)

● us + sy 是否大(CPU 占用)

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

2 0 0 98760 56789 5678900 0 0 100 50 100 200 5 2 92 1 0

● 如果 si/so > 0,说明 Swap 被使用,内存不足

●

相关推荐
咯哦哦哦哦1 小时前
配置VNC sever 6.11.0版本 linux(激活码)
linux·运维·服务器
傲世仙尊1 小时前
序列化与自定义协议-把结构体拆成字节流再拼回来
linux·服务器·网络·arm开发
倔强的石头1061 小时前
【Linux指南】动静态库系列(九):动态库如何进入进程地址空间:从磁盘 .so 到共享内存映射
java·linux·服务器
鬼手点金2 小时前
Claude Code示范案例-进阶学习路径
java·服务器·前端·学习·计算机视觉·前向传播
茉莉玫瑰花茶2 小时前
GO [ 文件 ]
服务器·golang
xbzb2 小时前
Linux iSCSI 存储部署与 CHAP 认证完全指南
linux·服务器·iscsi·chap·共享硬盘
奕鼎竜瑆2 小时前
MCP Connectors by Databox 新手部署与调用指南
服务器·人工智能
闭包不眠2 小时前
端侧AI能省多少服务器钱:把账换成字节算
运维·服务器·图像处理·人工智能·计算机视觉
꯭自꯭闭꯭2 小时前
达梦守护集群手工切换及故障切换
linux·运维·服务器·数据库