【Linux性能优化】常用工具和实战指令

作者:唐叔在学习

专栏:唐叔的后端成长之路

大家好,我是唐叔!今天咱们来聊聊 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服务器现在健康吗?

🔍 工具推荐:tophtopvmstat

当你发现服务器变慢,第一步就是 全局观察,看看是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?

🔍 工具推荐:pidstatperfmpstat

(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了?

🔍 工具推荐:freepmapsmem

(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分析:磁盘慢成蜗牛?

🔍 工具推荐:iostatiotopblktrace

(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. 网络分析:网卡打满了?

🔍 工具推荐:netstatsstcpdumpiftop

(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高 toppidstatperf %CPUload average
内存泄漏 freepmapsmem availableSwap
磁盘IO慢 iostatiotop %utilawait
网络延迟 ssiftoptcpdump 带宽、连接数

📢 唐叔建议:

  1. 先全局(top/htop)→ 再细分(CPU/内存/磁盘/网络)
  2. 工具是武器,思路是兵法,平时多练手,遇到问题才不慌!

🚀 你的服务器还在卡顿吗?赶紧试试这些工具吧!
📌 关注唐叔,更多技术文章持续更新!
👍 如果觉得有用,点赞 + 收藏,支持一下!

#Linux性能优化 #服务器卡顿 #CPU负载高 #内存泄漏 #磁盘IO #网络延迟 #Linux命令 #性能分析

相关推荐
老马啸西风3 小时前
windows wsl2-05-docker 安装笔记
运维·windows·笔记·docker·容器·k8s
老马啸西风3 小时前
windows docker-02-docker 最常用的命令汇总
linux·运维·ubuntu·docker·容器·eureka·maven
sztomarch3 小时前
Tshark-Tcpdump
linux·运维·网络·测试工具·tcpdump
手眼通天王水水3 小时前
【Linux】3. Shell语言
linux·运维·服务器·开发语言
程序员JerrySUN5 小时前
Valgrind Memcheck 全解析教程:6个程序说明基础内存错误
android·java·linux·运维·开发语言·学习
大母猴啃编程5 小时前
再谈文件-ext2文件系统
linux·运维·服务器·网络
NEXU55 小时前
Linux:线程控制
linux·运维·服务器
jllllyuz6 小时前
nginx定制http头信息
运维·nginx·http
COWORKSHOP6 小时前
Curtain e-locker易锁防泄密:从源头把关“打印”安全
运维·安全·web安全·microsoft·网络安全·软件需求
菜萝卜子7 小时前
【Linux】AKHQ实现kafka可视化
linux·运维·kafka