Linux 性能调优常用命令(建议收藏)
在 Linux 系统运维和开发过程中,性能调优是一项必备技能。无论是应对高并发、排查系统响应慢,还是分析资源瓶颈,熟练掌握性能分析命令都能让你事半功倍。本文系统梳理 Linux 下常用的性能调优命令,涵盖整体负载、CPU、内存、磁盘 I/O、网络以及综合工具,帮助大家快速定位问题。
一、整体性能查看
1. uptime – 快速看负载
uptime 显示系统已运行时间、当前登录用户数以及系统负载平均值(1 分钟、5 分钟、15 分钟)。负载值表示处于可运行/不可中断状态的进程数,通常以 CPU 核心数为阈值评估是否过载。
$ uptime
14:32:15 up 10 days, 3:21, 2 users, load average: 0.08, 0.03, 0.01
-
若
load average长期超过 CPU 逻辑核心数的 0.7,可能需要关注。
2. top / htop – 实时进程监控
top 是最经典的实时监控工具,显示 CPU、内存、进程排名。按 P 按 CPU 排序,按 M 按内存排序,按 1 展开每个 CPU 核心的使用率。
$ top
us:用户态 CPU
sy:内核态 CPU
id:空闲 CPU
wa:等待 I/O 的 CPU
htop 是 top 的增强版,支持鼠标、颜色高亮、横向/纵向滚动,需要额外安装。
# 安装 htop (CentOS/Ubuntu)
$ yum install htop -y # or apt install htop
$ htop
二、CPU 性能分析
1. mpstat – 多核 CPU 统计
mpstat 来自 sysstat 包,输出每个 CPU 核心或整体 CPU 的使用率,能清晰看到各核心压力是否均衡。
# 每 2 秒显示一次所有 CPU 核心数据,共输出 3 次
$ mpstat -P ALL 2 3
-
%usr、%sys、%iowait、%irq、%soft等字段有助于判断用户程序、系统调用或 I/O 等待导致的 CPU 瓶颈。
2. pidstat – 按进程查看 CPU
同样来自 sysstat,pidstat 可以针对每个进程报告 CPU、内存、I/O 统计信息,是定位“哪个进程导致负载高”的利器。
# 查看所有进程的 CPU 使用情况(每隔 1 秒,共 3 次)
$ pidstat 1 3
# 查看特定进程 (PID 1234) 的详细统计
$ pidstat -p 1234 1
3. perf – 全面的 CPU 剖析
perf 是内核自带的性能剖析工具,能够采集 CPU 硬件事件(如时钟周期、缓存未命中、分支预测失败等),适合深入分析热点函数。
# 统计 10 秒内的 CPU 周期事件
$ perf stat -e cpu-clock -a sleep 10
# 记录 CPU 采样数据 (按 Ctrl+C 停止)
$ perf record -a -g sleep 30
$ perf report
实践中常用 perf top 实时查看当前系统中占用 CPU 最多的函数。
三、内存性能分析
1. free – 内存使用概览
free 显示物理内存和交换分区的总量、已用、空闲、缓冲区/缓存等信息。-h 选项以人类可读单位显示。
$ free -h
total used free shared buff/cache available
Mem: 7.6G 1.2G 5.8G 123M 632M 6.0G
Swap: 2.0G 0.0B 2.0G
-
available列是估算的可用于启动新进程的内存(不包括 swap),比free列更有参考价值。
2. vmstat – 虚拟内存统计
vmstat 报告进程、内存、分页、块 I/O、陷阱以及 CPU 活动。常用采样模式:
$ vmstat 2 5 # 每 2 秒一次,共 5 次
重要字段:
-
si/so:从磁盘交换入/出的内存量(若持续大于 0 说明物理内存不足) -
bi/bo:块设备读/写的块数 -
cs:上下文切换次数(过高可能意味着锁竞争或线程过多) -
in:中断次数 -
r/b:运行队列中的进程数 / 处于不可中断睡眠的进程数
四、磁盘 I/O 性能分析
1. iostat – 块设备负载
iostat 是 sysstat 包的核心工具之一,报告磁盘的吞吐量、I/O 次数、平均等待时间等。
# 每 2 秒刷新,显示扩展统计(包括 avgqu-sz、await、%util)
$ iostat -x 2
关键列说明:
-
%util:设备忙的百分比(接近 100% 说明磁盘已达到饱和) -
await:平均每次 I/O 请求的等待时间(包括排队和服务时间,过高表示磁盘慢或忙) -
r/s、w/s:每秒读/写请求次数 -
rkB/s、wkB/s:每秒读/写数据量
2. iotop – 按进程查看 I/O
iotop 类似 top,但专注于磁盘 I/O 活动,可显示每个进程的读写速率。需 root 权限。
$ sudo iotop -o # 只显示有 I/O 活动的进程
五、网络性能分析
1. netstat – 网络连接与接口统计
虽然部分发行版已逐渐弃用,但 netstat 依然广泛用于显示路由表、网络连接、接口统计等。常用组合:
# 显示所有 TCP 连接,不解析服务名(更快)
$ netstat -antp
# 查看网络接口统计信息
$ netstat -i
-
-t:TCP,-u:UDP,-l:监听端口,-p:显示进程 PID/名称。
2. ss – 更高效的 socket 统计
ss 是 netstat 的替代者,解析速度更快,输出信息更详细。
# 列出所有 ESTABLISHED 状态的 TCP 连接
$ ss -t state established
# 显示所有监听端口及其进程
$ ss -tlnp
3. sar – 历史性能数据收集
sar 同样是 sysstat 的核心组件,可以记录和回放历史性能数据(CPU、内存、网络、I/O 等),是回溯问题的王牌工具。
# 查看今天的网络设备统计 (每10分钟采样一次)
$ sar -n DEV
# 查看历史数据 (指定某天的数据文件)
$ sar -f /var/log/sa/sa17 -u
4. tcpdump – 抓包分析
当怀疑网络层面存在重传、延迟、丢包时,tcpdump 配合 Wireshark 可精确定位。
# 抓取 eth0 接口的 80 端口流量,保存为 pcap 文件
$ sudo tcpdump -i eth0 port 80 -w http.pcap
六、综合性能监控工具
dstat – 多维度实时统计
dstat 融合了 vmstat、iostat、netstat 等工具的功能,并用彩色表格在同一界面展示 CPU、磁盘、网络、分页等数据。
$ dstat -c -d -n -m -l 2
-
-c:CPU,-d:磁盘,-n:网络,-m:内存,-l:负载。
glances – 跨平台 Web 监控
glances 使用 psutil 库收集系统信息,支持终端 UI、Web 界面和 API 输出,对大规模运维非常友好。
$ glances
# 开启 Web 服务模式
$ glances -w
七、调整优先级与资源限制
性能调优不仅是“观察”,有时还需要主动干预。
nice / renice – 调整进程优先级
nice 指定进程的初始优先级(-20 最高,19 最低),renice 改变运行中进程的优先级。
# 以低优先级运行备份脚本
$ nice -n 19 ./backup.sh
# 将 PID 1234 的优先级调整为 -5(需要 root)
$ sudo renice -n -5 -p 1234
ulimit – 限制进程资源
ulimit 可控制 Shell 启动进程所能使用的文件句柄数、栈大小、核心转储等。对于高并发服务器,需要调高 nofile(打开文件数限制)。
$ ulimit -n 65535 # 设置当前会话文件描述符上限
# 永久修改需要编辑 /etc/security/limits.conf
taskset – 绑定 CPU 核心
将关键进程绑定到特定 CPU 核心,可以避免缓存抖动并提高性能。
# 把 PID 5678 绑定到 CPU 核心 0 和 2 上
$ taskset -pc 0,2 5678
八、常用性能调优思路与总结
-
从顶向下:先用
top/uptime/free -h/dstat看整体,识别瓶颈类型(CPU、内存、I/O 还是网络)。 -
深入细节:
-
CPU 高 →
pidstat/perf top定位进程或线程; -
内存不足 →
vmstat检查 swap,smem查看 PSS; -
磁盘 I/O 高 →
iostat -x看%util和await,iotop找进程; -
网络问题 →
ss/ifconfig看丢包,tcpdump分析重传。
-
-
保留历史数据:部署
sysstat定时任务,用sar回溯问题时间点。 -
主动调优:利用
nice、ulimit、taskset控制资源分配,调整内核参数(/etc/sysctl.conf)。
最后提醒:性能调优不是盲目执行命令,而是基于数据分析假设、验证、迭代。建议在多测试环境下先验证变更的影响。
以上命令覆盖了 Linux 性能调优的绝大部分场景,掌握它们,你就能从容应对各种性能挑战。如果你有更具体的场景(如数据库、Java 应用),还可以配合相应生态工具(如 perf + FlameGraph、bcc 动态追踪)进一步分析。
收藏本文,随时查阅,也欢迎在评论区交流你的调优经验!
更多推荐




所有评论(0)