服务器负载高先看什么:用 uptime、top 与 vmstat 三步定位 CPU 还是 I/O 瓶颈
【摘要】 服务器变慢时先别急着扩容:用 uptime 看负载趋势、top 定位占用进程、vmstat 区分 CPU 还是 I/O 瓶颈,再按结论表采取下一步排查动作。
服务器变慢时,先不要急着扩容或重启。先分清瓶颈在 CPU、内存、磁盘 I/O 还是网络,否则扩容也可能扩错地方。下面用三条常用命令,做一次可复现的定位。
第一步:uptime 看负载与趋势
执行 uptime,重点看三个平均负载和在线时长:
uptime
输出示例:
10:05:00 up 12 days, 3:20, 2 users, load average: 8.20, 6.10, 3.40
判断方法很简单:把 1 分钟、5 分钟、15 分钟负载和 CPU 核数放在一起比。如果负载长期高于核数,说明任务在排队;如果 1 分钟负载高、15 分钟负载低,可能是突发任务,值得先查最近启动的进程和定时任务。
第二步:top 看谁在占资源
执行 top,按 P 按 CPU 排序,按 M 按内存排序:
top
重点看三类信息:CPU 使用率最高的进程、内存占用最高的进程,以及 %wa(等待 I/O 的 CPU 时间)。如果 %wa 很高,瓶颈往往不在算力,而在磁盘或存储;如果某个进程长期占满单核,还要看它是单线程还是多线程,避免把单核瓶颈误判为整机算力不足。
第三步:vmstat 看系统级瓶颈
执行 vmstat 1 5,每秒采样一次、共 5 次:
vmstat 1 5
重点看 r、b、si、so、bi、bo、wa 这几列:r 大表示可运行进程多、CPU 排队;b 大表示进程在等 I/O;si、so 持续大于 0 表示在换页,内存可能不足;bi、bo 持续很高则先看磁盘读写,再结合 iostat 确认是哪块盘。
一个速查结论表
| 现象 | 更可能的瓶颈 | 下一步 |
|---|---|---|
| 负载高于核数,%wa 很低 | CPU | 查 top 中 CPU 最高的进程 |
| %wa 高,b 列大 | 磁盘 I/O | 查 iostat 与慢查询、日志写入 |
| si、so 持续大于 0 | 内存 | 查内存占用与是否需要扩容 |
| 负载突发后回落 | 临时任务 | 查定时任务与新上线变更 |
排查时顺手记三件事
一是记录采样时间、负载值和关键进程名;二是确认最近是否有发布、定时任务或备份窗口;三是先做可回滚的止血动作,例如限流、停掉非核心任务,再谈扩容。把这三步固定成习惯,下次服务器变慢,就能先定位再动手,而不是先重启再猜原因。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)