连载中 19/20

性能观测四件套:top、free、iostat、ss 联动读数

2026-10-22 · 49 阅读 · 0 评论 · 0 赞

top:CPU 与进程(第 10 篇的深化)

$ top        # M 按内存排 / P 按CPU排 / 1 展开每核
load average: 6.80, 3.10, 1.20     ← 1分钟在飙,5/15分钟正常 = 刚发生的事
%Cpu(s): 85.0 us,  2.0 sy,  0.0 ni, 3.0 id,  9.5 wa
                                              ↑ wa 高 = CPU 在等磁盘

读表要点:三个 load 一起看走向(1 分钟高、15 分钟低 = 刚冒头;三个都高 = 持续过载);us 高查应用,wa 高查磁盘——这两句能省一半排查时间。

free:别再被「内存所剩无几」骗了

$ free -h
       total   used   free   buff/cache  available
Mem:   7.8Gi  6.2Gi  120Mi  1.5Gi       1.1Gi
Swap:  2.0Gi    0B   2.0Gi

两句话纠正最大误区:free 小不是问题,Linux 把闲内存拿去做文件缓存(buff/cache)提高性能,要用时随时归还;真正该看的是 available——它才是「还能给新程序用多少」。available 持续很低、Swap 开始被用(used > 0),才是真内存告急。Java 应用还要叠加 JVM 视角(堆内堆外,JVM 系列讲过)。

iostat:磁盘到底忙不忙

$ iostat -x 1        # 每秒刷新一次(sysstat 包,yum install sysstat)
Device   r/s   w/s   rkB/s   wkB/s  await  %util
vda      2.0  180.0  64.0  51200.0   45.2   96.5
                                            ↑     ↑
                                   平均等待ms  磁盘饱和度

两个指标定生死:%util 长期 90%+ = 磁盘打满;await 飙升(正常几毫秒,异常几十上百毫秒)= I/O 变慢,上层表现就是接口卡顿。结合 top 的 wa 高,磁盘瓶颈基本实锤——再翻磁盘篇找是谁在狂写。

ss:连接数与端口

$ ss -s                      # 全局汇总(总连接、各状态计数)
$ ss -ant | awk 'NR>1{print $1}' | sort | uniq -c    # 状态分布
    120 ESTAB                ← 正常业务连接
   2500 TIME-WAIT            ← 短连接太多(客户端没复用连接池)
    300 CLOSE-WAIT           ← 应用没关连接(代码泄漏,值得警觉)
$ ss -ltnp                   # 谁在监听哪个端口(排「端口被占用」)

读数要点:TIME-WAIT 大多无害(网络系列讲过,主动关闭方的正常余韵);CLOSE-WAIT 堆积是真病——对端关了你没关,基本是代码里连接没释放,必须修。网络细节在「网络基础硬核系列」已专篇展开,这里只留联动判断。

四表联动的判断矩阵

现象组合指向下一步
us 高 + load 高应用在烧 CPUtop 找 PID,Java 上 jstack
wa 高 + %util 高磁盘瓶颈iotop / 磁盘篇找狂写者
available 低 + Swap 用了内存不足ps 排大进程 / JVM 系列排查
CLOSE-WAIT 堆积连接泄漏查应用连接池配置与代码
四表都正常但慢瓶颈在外部依赖链路追踪 / 查下游接口

下一篇是系列收官:服务器排障手册——把 20 篇的命令串成五大事故场景的标准动作,一张清单带走。

☕
503

10 年全栈工程师 · 503咖啡馆主理人

#性能观测#top#free#iostat#ss

评论 (0)

热门推荐

连载中 11/22

主从搭建实操:从零配出一主两从

光讲原理不过瘾?手把手搭一主两从:my.cnf 六个参数、复制账号、GTID、CHANGE REPLICATION SOURCE TO、SHOW REPLICA STATUS 验收,附翻车排查清单。

#MySQL#主从复制#GTID#主从搭建#高可用
2026-05-07 · 10114 阅读 · 0 评论 · 0 赞
连载中 16/22

连接池:HikariCP 参数与连接风暴

连接池不是越大越好:8 核机器配 1000 连接反而更慢的数学原理,HikariCP 四个必调参数,maxLifetime 与 wait_timeout 的隐形陷阱。

#MySQL#连接池#HikariCP#maxLifetime#连接风暴
2026-05-10 · 9877 阅读 · 0 评论 · 0 赞
连载中 4/16

缓存穿透:恶意 ID 打穿 MySQL 的四道防线

请求的数据在缓存和数据库里都不存在时,缓存形同虚设。聊聊参数校验、空值缓存、布隆过滤器、限流熔断四道防线的原理与组合打法。

#Redis#缓存穿透#布隆过滤器#高可用
2026-05-16 · 9307 阅读 · 21 评论 · 287 赞