作者:唐叔在学习
专栏:唐叔的后端成长之路
大家好,我是唐叔!今天咱们来聊聊 Linux性能优化 那些事儿。你是不是也遇到过服务器卡成狗,CPU 100%,内存爆满,磁盘IO飙高,但就是不知道问题出在哪?别急,今天我就手把手教你用 Linux性能定位工具 快速揪出系统瓶颈,让你的服务器飞起来!
📌 本文重点:
- Linux性能分析 常用工具大全
- CPU、内存、磁盘、网络 四大维度精准定位
- 实战命令 + 场景分析,小白也能轻松上手
- 关键词:Linux性能优化、服务器卡顿、CPU负载高、内存泄漏、磁盘IO、网络延迟
文章目录
-
- [1. 先看整体:你的Linux服务器现在健康吗?](#1. 先看整体:你的Linux服务器现在健康吗?)
-
- [(1)top ------ 最基础的性能监控](#(1)top —— 最基础的性能监控)
- [(2)htop ------ 更强大的 top 替代品](#(2)htop —— 更强大的 top 替代品)
- [(3)vmstat ------ 查看系统整体状态](#(3)vmstat —— 查看系统整体状态)
- [2. CPU性能分析:谁在疯狂吃CPU?](#2. CPU性能分析:谁在疯狂吃CPU?)
-
- [(1)pidstat ------ 定位高CPU进程](#(1)pidstat —— 定位高CPU进程)
- [(2)perf ------ 深入分析CPU热点(火焰图)](#(2)perf —— 深入分析CPU热点(火焰图))
- [(3)mpstat ------ 查看多核CPU负载](#(3)mpstat —— 查看多核CPU负载)
- [3. 内存分析:内存泄漏?OOM了?](#3. 内存分析:内存泄漏?OOM了?)
-
- [(1)free ------ 查看内存使用情况](#(1)free —— 查看内存使用情况)
- [(2)pmap ------ 查看进程内存占用](#(2)pmap —— 查看进程内存占用)
- [(3)smem ------ 按PSS统计内存](#(3)smem —— 按PSS统计内存)
- [4. 磁盘IO分析:磁盘慢成蜗牛?](#4. 磁盘IO分析:磁盘慢成蜗牛?)
-
- [(1)iostat ------ 监控磁盘IO](#(1)iostat —— 监控磁盘IO)
- [(2)iotop ------ 查看哪个进程狂写磁盘](#(2)iotop —— 查看哪个进程狂写磁盘)
- [(3)blktrace ------ 深入分析块设备IO](#(3)blktrace —— 深入分析块设备IO)
- [5. 网络分析:网卡打满了?](#5. 网络分析:网卡打满了?)
-
- [(1)ss(替代netstat)------ 查看网络连接](#(1)ss(替代netstat)—— 查看网络连接)
- [(2)iftop ------ 实时流量监控](#(2)iftop —— 实时流量监控)
- [(3)tcpdump ------ 抓包分析](#(3)tcpdump —— 抓包分析)
- [🎯 总结:Linux性能优化黄金法则](#🎯 总结:Linux性能优化黄金法则)
1. 先看整体:你的Linux服务器现在健康吗?
🔍 工具推荐:top
、htop
、vmstat
当你发现服务器变慢,第一步就是 全局观察,看看是CPU、内存、磁盘还是网络出了问题。
(1)top ------ 最基础的性能监控
bash
top
- 按
P
:按CPU使用率排序 - 按
M
:按内存使用排序 - 按
1
:查看每个CPU核心的负载
📌 唐叔解读:
- 如果
%CPU
长期接近100%,说明CPU是瓶颈。 - 如果
%MEM
很高,可能是内存泄漏。 load average
(负载平均值)> CPU核心数,说明系统过载。
(2)htop ------ 更强大的 top 替代品
bash
htop # 需安装:`yum install htop` 或 `apt install htop`
- 彩色显示,更直观
- 支持鼠标点击,交互更方便
(3)vmstat ------ 查看系统整体状态
bash
vmstat 1 5 # 每秒1次,输出5次
r
:运行队列长度(>CPU核心数说明CPU忙)si/so
:Swap交换(频繁交换说明内存不足)wa
:IO等待(高说明磁盘是瓶颈)
2. CPU性能分析:谁在疯狂吃CPU?
🔍 工具推荐:pidstat
、perf
、mpstat
(1)pidstat ------ 定位高CPU进程
bash
pidstat -u 1 # 每秒刷新CPU使用率
%CPU
:进程占用的CPU百分比Command
:查看是哪个进程在搞事情
(2)perf ------ 深入分析CPU热点(火焰图)
bash
perf top # 实时查看函数调用热点
perf record -g # 记录性能数据,生成火焰图
🔥 火焰图分析:
- 宽峰:代表该函数占用CPU高
- 平顶:可能是锁竞争或CPU瓶颈
(3)mpstat ------ 查看多核CPU负载
bash
mpstat -P ALL 1 # 查看每个CPU核心的使用率
- 如果某个核心 100%,可能是单线程程序导致的瓶颈。
3. 内存分析:内存泄漏?OOM了?
🔍 工具推荐:free
、pmap
、smem
(1)free ------ 查看内存使用情况
bash
free -h # 人类可读格式
available
:可用内存(重点关注)Swap
使用高?说明物理内存不足!
(2)pmap ------ 查看进程内存占用
bash
pmap -x <PID> # 查看进程的详细内存分配
RSS
:实际物理内存占用PSS
:更准确的内存统计(共享库按比例计算)
(3)smem ------ 按PSS统计内存
bash
smem -s pss # 按实际内存占用排序
- 比
top
更准确,适合分析 内存泄漏。
4. 磁盘IO分析:磁盘慢成蜗牛?
🔍 工具推荐:iostat
、iotop
、blktrace
(1)iostat ------ 监控磁盘IO
bash
iostat -xz 1 # 查看磁盘吞吐和延迟
%util
:磁盘利用率(>80%说明IO瓶颈)await
:IO平均等待时间(越高越慢)
(2)iotop ------ 查看哪个进程狂写磁盘
bash
iotop # 需root权限
- 类似
top
,但针对磁盘IO排序。
(3)blktrace ------ 深入分析块设备IO
bash
blktrace -d /dev/sda -o trace # 记录IO事件
- 适合分析 磁盘延迟高 的问题。
5. 网络分析:网卡打满了?
🔍 工具推荐:netstat
、ss
、tcpdump
、iftop
(1)ss(替代netstat)------ 查看网络连接
bash
ss -tulnp # 查看监听端口和连接
-t
:TCP连接-u
:UDP连接
(2)iftop ------ 实时流量监控
bash
iftop -i eth0 # 查看网卡流量
- 类似
top
,但显示 网络带宽占用。
(3)tcpdump ------ 抓包分析
bash
tcpdump -i eth0 port 80 -w capture.pcap # 抓取80端口流量
- 适合分析 网络延迟、丢包 问题。
🎯 总结:Linux性能优化黄金法则
问题类型 | 推荐工具 | 关键指标 |
---|---|---|
CPU高 | top 、pidstat 、perf |
%CPU 、load average |
内存泄漏 | free 、pmap 、smem |
available 、Swap |
磁盘IO慢 | iostat 、iotop |
%util 、await |
网络延迟 | ss 、iftop 、tcpdump |
带宽、连接数 |
📢 唐叔建议:
- 先全局(
top
/htop
)→ 再细分(CPU/内存/磁盘/网络) - 工具是武器,思路是兵法,平时多练手,遇到问题才不慌!
🚀 你的服务器还在卡顿吗?赶紧试试这些工具吧!
📌 关注唐叔,更多技术文章持续更新!
👍 如果觉得有用,点赞 + 收藏,支持一下!
#Linux性能优化 #服务器卡顿 #CPU负载高 #内存泄漏 #磁盘IO #网络延迟 #Linux命令 #性能分析