哈喽大家好,这里是欢乐码。
不知道大家有没有遇到过这种让人心跳骤停的瞬间:正喝着咖啡摸着鱼,突然群里有人喊“测试环境崩了”或者“线上接口响应怎么这么慢”。
等你火急火燎地连上 Linux 服务器,面对黑乎乎的终端,第一反应是什么?重启?盲猜?
优秀的工程师绝不靠猜。要想快速给服务器“号脉”,你得有一个得心应手的工具箱。今天,我们就来盘点一下 Linux 系统下那些排查性能瓶颈的常用工具和进阶神器。建议收藏,下次再遇到服务器卡顿,直接照着敲!
一、 CPU 监测:看看是谁在疯狂“烧脑”
CPU 是服务器的大脑,当系统卡顿时,通常第一个看的就是它。
1. 常用工具:top & htop
- •
top:Linux 界的老牌大哥,几乎所有发行版自带。输入 top,你能看到实时的系统负载(Load Average)和各个进程的 CPU 占用率。按下大写 P 可以按 CPU 使用率排序。 - •
htop:top 的究极进化版,也是无数运维和开发的心头好。它不仅支持鼠标点击操作,还能以直观的彩色进度条展示每个 CPU 核心的使用情况。
2. 进阶工具:pidstat & mpstat
- •
mpstat:如果你是多核服务器,想要查看具体某一个 CPU 核心的详细状态(比如是不是某个核心的软中断太高了),用 mpstat -P ALL 1 就能一目了然。 - •
pidstat:来自 sysstat 包的神器。当你想精准追踪某个进程在一段时间内的 CPU 表现,或者区分到底是用户态(%usr)还是内核态(%system)在消耗资源时,pidstat 比 top 更好用。
二、 内存监测:工作台是不是被塞满了?
内存不够用,系统就会疯狂使用 Swap(交换分区),这时候磁盘 I/O 就会飙升,整个系统卡得像 PPT。
1. 常用工具:free
- • 最简单的命令,没有之一。通常配合
-m 或 -h 使用(free -h)。 - • 欢乐码提示:不要一看到
free 剩下很少就慌!Linux 的内存管理机制会把空闲内存拿来做缓存(buff/cache)加速文件读取。真正要关注的是 available(可用内存)还有多少,以及 Swap 有没有被大量使用。
2. 进阶工具:vmstat
- •
vmstat(Virtual Memory Statistics)不仅能看内存,还能看整个系统的进程状态和 I/O 活动。 - • 输入
vmstat 1(每秒刷新一次),重点关注 si(从磁盘换入内存)和 so(从内存换出到磁盘)这两列。如果这两个值长期非 0,说明你的内存真的不够了,系统正在拼命读写硬盘上的 Swap 分区。
三、 磁盘 I/O:IO 瓶颈,性能杀手
代码写得没问题,CPU 也不高,但接口就是慢?十有八九是卡在磁盘读写上了。
1. 常用工具:iostat
- • 想知道磁盘到底有多忙?
iostat -x 1 跑起来。 - • 重点盯住
%util 这一列,如果它经常逼近 100%,说明磁盘 I/O 已经处于满负荷运转状态了。另外,await(I/O 请求的平均等待时间)如果太长,也说明磁盘响应慢了。
2. 进阶工具:iotop
- •
iostat 只能告诉你磁盘很忙,但不能告诉你是谁在搞事情。这时候就需要 iotop 出马了。 - • 它的界面长得像
top,但它专门用来显示各个进程的磁盘读写速度。加上 -o 参数(只显示有 I/O 动作的进程),谁在疯狂读写日志或者刷库,瞬间原形毕露。
四、 网络监测:信息高速公路大塞车?
作为一个经常和 P2P、NAT 打交道的网络工程师,对网络状态的监控绝对是家常便饭。
1. 常用工具:ping & ss
- •
ss:用来替代古老的 netstat。如果你想查看当前服务器有多少个 ESTABLISHED 连接,或者哪个端口正在被监听,ss -ntlp 速度极快,是在大规模并发下排查连接数的好帮手。
2. 进阶工具:iftop & tcpdump
- •
iftop:想知道当前服务器的带宽都被谁吃光了?iftop 可以直观地显示出本服务器与其他主机之间的实时网络流量和连接情况。 - •
tcpdump:终极网络排查大杀器。遇到诡异的网络问题(比如丢包、握手失败),直接抓包看真相。虽然门槛高,但掌握了它,你就掌握了网络排错的终极密码。
五、 偷懒神器:“全能王”工具
如果你觉得上面这些命令太多记不住,别急,这里有两个综合性的“瑞士军刀”。
1. dstat
- • 它能把你想要的 CPU、磁盘、网络、换页状态等各种指标揉在一起,在一行里按列输出。非常适合用来做跨模块的关联分析(比如观察网络流量飙升时,CPU 和磁盘有没有跟着飙高)。
2. glances
- • 这是一个基于 Python 开发的跨平台系统监视工具。它试图将系统所有维度的信息(CPU、内存、负载、I/O、网络流量、甚至温度)塞进一个终端屏幕里,并且会用不同的颜色(绿、黄、红)来警告你潜在的瓶颈在哪。如果只能装一个工具,装它准没错。
总结
Linux 性能调优和排障是一门艺术,工具只是我们的“望闻问切”的手段。
- • CPU 高:找进程用
top,查线程用 top -H,细分指标看 pidstat。 - • 内存少:看全局用
free,查交换区用 vmstat。 - • I/O 慢:看磁盘压力用
iostat,抓罪魁祸首用 iotop。 - • 网络卡:查连接用
ss,看流量用 iftop,终极大招抓包用 tcpdump。
面对故障,保持冷静,思路清晰,手里有工具,心里自然就不慌了。
你的服务器平时最容易出什么问题?你最爱用的排错工具是哪个?欢迎在评论区留言讨论!我们下期见!