18 10 月 2026

top 是开服玩家第一个接触的命令,也是最被低估的命令——90% 的人只会看「内存用百分之几」,然后得出「机器够不够」的结论。这篇讲 top 的高级读法:哪些指标决定游戏服卡顿、交互命令怎么用、以及为什么 load average 比内存百分比更值得看。

本文基于 财富云计算 NAT 型云服务器(无独立公网 IP、价格比独立 IP 机型省一半以上)的运维实践。文中所有交互命令在 top 界面内直接按键盘输入。

一、top 界面:五个区,重点看三个

top - 10:23:45 up 5 days,  3 users,  load average: 1.25, 0.98, 0.87
Tasks: 120 total,   1 running, 119 sleeping,   0 stopped,   0 zombie
%Cpu(s): 12.3 us,  3.1 sy,  0.0 ni, 84.2 id,  0.3 wa,  0.0 hi,  0.1 si,  0.0 st
MiB Mem :  15892.2 total,    8231.4 free,   5102.8 used,   2558.0 buff/cache
MiB Swap:   4096.0 total,    1024.0 free,   3072.0 used.   6501.4 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1234 gameserv  20   0   9231m  6142m  1240m S  85.6  38.9  12:34.56 PalServer

重点区 1:load average(1/5/15 分钟负载)

数值关系含义
load < 核数健康
load ≈ 核数满载边缘
load > 核数 × 1.5过载,进程在排队

4 核机器 load 6.0 = 有 2 个进程在永远等 CPU——这就是「机器没满但服就是卡」的真相。load average 比 %CPU 更能说明问题:%CPU 是瞬时值,load 是排队深度。

重点区 2:%Cpu(s) 的 wa(iowait)

wa 是「CPU 等磁盘」的时间占比:

wa含义对策
< 5%正常—
5-15%磁盘有点吃力关注
> 20%磁盘 IO 是瓶颈升级 SSD/检查存档写入

游戏服经典场景:玩家抱怨放建筑卡顿,一看内存 CPU 都不高,但 wa 15%——磁盘 IO 跟不上。这就是云服务器磁盘类型要讲 SSD 的原因。

重点区 3:st(steal time)

st 是「你的 CPU 时间被 Hypervisor 偷走给别的虚拟机」——超售机器的铁证。正常 < 1%,长期 > 3% 说明商家超售严重,找商家对质或迁移,测试方法见服务器性能测试与跑分。


二、进程列:%CPU 之外看什么

进程列表默认列不够用,按这几个键切换视图:

按键效果用途
Shift+P按 CPU 排序(默认)找吃 CPU 的进程
Shift+M按内存排序找吃内存的进程
Shift+T按运行时间排序找长期驻留的进程
1展开每个核心看单核瓶颈(游戏服关键)
e / E切换内存单位KB/MB/G 循环
f自定义显示列加 PPID、SWAP 等列

游戏服必看:单核分布

按 1 展开核心后,游戏服的典型健康形态是「一个核接近 100%,其他核闲着」——因为服务端逻辑主要在单线程。如果四个核都 60-80%,说明有多进程负载(比如同机跑了网站+数据库),考虑隔离或限额。


三、内存的正确读法:三个数字的关系

新手只看 %MEM,正确读法是三数字联动:

MiB Mem :  15892 total,   8231 free,   5102 used,   2558 buff/cache
MiB Swap:   4096 total,   1024 free,   3072 used.   6501 avail
现象诊断对策
free 少,buff/cache 高,Swap used ≈ 0健康。Linux 把空闲内存拿来做缓存是本能,不是内存不足不用管
Swap used 持续增长物理内存真的不够加 Swap(Swap 优化)或加内存
Swap used 高 + wa 高内存在换页,磁盘被拖垮游戏服卡顿的头号组合,立即升级内存
avail 越来越小可用内存在枯竭找吃内存的元凶(按 Shift+M 排序)

buff/cache 不是问题——它是 Linux 主动利用的缓存,需要时立刻还给程序。看到「内存用了 90%」就慌,是新手最常见的误判。


四、交互命令速查卡

命令作用
k杀死进程(输入 PID 和信号,15 温和 / 9 强杀)
rrenice 改优先级(给游戏服降 ni 值提优先级)
u只看某个用户的进程
L搜索进程名
W保存当前视图设置(下次 top 还是这个布局)
c显示完整命令路径
t切换 CPU 显示模式
m切换内存显示模式
?帮助

推荐布局(开服日常):按 W 前先 1(展开核心)+ Shift+M(内存排序)+ e(G 单位),存成默认视图。


五、替代与增强:什么时候不用 top

场景更好的工具
一眼看总览htop(彩色、鼠标可点,apt 直接装)
看历史趋势Netdata 可视化监控
长期采集告警Prometheus + Grafana
进程挂了自动知道游戏服务器监控与告警
批量看多台glances 或监控面板

定位:top 是「出问题时第一个敲的命令」,趋势和告警交给监控系统。两者不是替代关系。


六、实战:一次完整的卡顿排查

玩家说「服卡了」,按这个流程走:

# 1. 总览:load、wa、st、Swap
top
# load > 核数×1.5?→ CPU 过载,看谁在吃(Shift+P)
# wa > 20%?→ 磁盘瓶颈
# st > 3%?→ 超售,找商家
# Swap used 在涨?→ 内存不足

# 2. 定位元凶进程:按 Shift+P / Shift+M 排序

# 3. 深入单进程
#    按 1 展开核心,看是单核满还是多核分摊
#    按 c 看完整命令,确认是不是自己的服务端

# 4. 看这个进程在干什么
cat /proc/<PID>/status | grep -E 'VmRSS|Threads'
ls -l /proc/<PID>/fd | wc -l     # 打开的文件描述符数量

# 5. 还看不懂,上 strace/lsof 深挖
#    https://z0w.cn/wiki/process-debug-perf.html

排查思路汇总见服务器资源排查实战,游戏场景特化版见开服卡顿掉线排查手册。


七、常见疑问

Q:top 里 %CPU 超过 100% 正常吗?
多核机器上,一个多线程进程可以吃掉 400%(4 核全占)。按 1 展开看单核,才知道是不是单核瓶颈。

Q:load average 三个数字看哪个?
1 分钟看当下,5 分钟看趋势,15 分钟看背景。5 分钟持续 > 核数才需要行动,瞬时高值可能是正常波动。

Q:buff/cache 能手动清吗?
能(echo 3 > /proc/sys/vm/drop_caches)但没必要——那是给「想看剩余内存图心安」的人用的,清了反而丢缓存、变慢。


结语

top 的高级读法核心是三件事:load average 看排队、wa 看磁盘、st 看商家诚信。再配上内存三数字联动(free/buff-cache/avail)和交互命令,一个 top 能回答「机器为什么卡」的 80% 的问题。剩下的 20%,交给监控和 strace。

配套阅读:Linux 性能分析三板斧、服务器资源排查实战、进程调试实战:strace / lsof / perf。

财富云计算 专注 NAT 型云服务器,无独立公网 IP、价格比独立 IP 机型省一半以上,控制台自带资源监控图表,配合本文的 top 读法,卡顿问题十分钟定位。

延伸阅读
  1. 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
  2. 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
  3. 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
  4. 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
  5. 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
  6. RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
  7. 短链接服务搭建:Shlink 自托管,链接数据自己掌握
  8. 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
更多阅读
  1. 上一篇:Linux 开服环境一键脚本:从裸机到可开服只要十分钟
  2. 下一篇:小项目用什么数据库:SQLite 与 MySQL 怎么选
发表评论 1