Linux性能监控与调优全攻略
本文摘要:本文详细介绍了Linux系统性能监控与调优的方法,从CPU、内存、磁盘I/O、网络四个维度展开。性能监控部分列举了top、mpstat、free、iostat、sar等常用工具的关键参数和输出解读;调优部分针对不同场景提供了绑定CPU核心、调整内存参数、优化I/O调度、TCP缓冲区设置等具体策略,并附有Web服务器优化案例。文章强调监控先行、单一变量调整原则,提供了命令速查表和内核优化建
**一、一、性能检测(监控)
**1. CPU1. CPU 监控
|
命令 |
功能 |
关键参数/输出 |
场景 |
|---|---|---|---|
|
|
实时进程级 |
|
快速定位高 CPU 进 |
|
|
每个核心的 CPU 使用率 |
|
多核负载均衡分析 |
|
|
系统负载与运行时间 |
11:32:20 up 3:21, 2 users, load average: 0.00, 0.01, 0.05 |
快速查看负载趋势 |
|
|
实时 CPU 热点函数分析 |
按函数名排序 CPU 占用率 |
深入代码级 |
说明:
1. top
分类 具体指标 数值 / 说明 系统基本信息 当前时间 11:16:47 开机时长 up 3:05(已开机 3 小时 05 分钟) 登录用户数 2 users 系统平均负载 load average: 0.00, 0.01, 0.05(1 分钟、5 分钟、15 分钟平均负载) 任务(进程)统计 总进程数 226 total 运行中进程数 1 running 休眠进程数 222 sleeping 停止进程数 3 stopped 僵尸进程数 0 zombie CPU 使用率 用户态(us) 0.1%(应用程序占用 CPU 比例) 内核态(sy) 0.1%(系统内核功能占用 CPU 比例) 调整优先级的用户态(ni) 0.0% 空闲(id) 99.8%(空闲 CPU 比例,越高越空闲) 等待 I/O(wa) 0.0%(因等待磁盘、网络等 I/O 操作占用 CPU 耗时比例) 硬件中断(hi) 0.0%(处理硬件中断占用 CPU 耗时比例) 软件中断(si) 0.0%(处理软件中断占用 CPU 耗时比例) 被虚拟机 “偷走”(st) 0.0%(虚拟机场景下,被其他虚拟机占用的 CPU 时间比例) 内存信息 总物理内存(KiB Mem total) 4026372 KiB(约 4GB ) 空闲物理内存(free) 2535540 KiB 已用物理内存(used) 783396 KiB 缓存(buff/cache) 707436 KiB(可被释放给应用的临时缓存) 交换分区信息 总交换分区(KiB Swap total) 4194300 KiB(约 4GB ) 空闲交换分区(free) 4194300 KiB 已用交换分区(used) 0 KiB(未用到磁盘交换,性能较好) 实际可用内存(avail Mem) 2899668 KiB(含可回收缓存,体现实际可用内存) 进程详情 PID(进程 ID) 10463、12545、1、2 等 USER(所属用户) root(所列进程均属 root 用户 ) PR(进程优先级) 20(数值越小优先级越高,所列进程多为 20 ) NI(nice 值) 0(调整进程优先级,范围 -20 ~ 19 ) VIRT(虚拟内存总量) 如 566636 KiB(vmtoolsd 进程)、162012 KiB(top 进程 )等 RES(实际物理内存占用) 如 25912 KiB(vmtoolsd 进程)、2372 KiB(top 进程 )等 SHR(共享内存) 如 19120 KiB(vmtoolsd 进程)、1588 KiB(top 进程 )等 S(进程状态) S(休眠)、R(运行,如 top 进程状态为 R )等 % CPU(进程 CPU 使用率) 如 0.3%(vmtoolsd、top 进程 )、0.0%(systemd 等进程 ) % MEM(进程内存使用率) 如 0.6%(vmtoolsd 进程)、0.1%(top 进程 )、0.2%(systemd 进程 )等 TIME+(累计 CPU 耗时) 如 0:13.54(vmtoolsd 进程)、0:00.02(top 进程 )、0:01.55(systemd 进程 )等 COMMAND(进程名称 / 命令) vmtoolsd、top、systemd、kthreadd 等 2.
mpstat -P ALL 1
列名 全称 / 含义 示例值(以 all行为例)补充说明 11:27:17 AM11:27:18 AM采样时间 采样时间戳 第一行是 “表头时间”,后续是实际采样时间 CPUCPU 标识:
-all= 所有 CPU 总览
-0/1= 单个 CPU 核心编号all、0、1你的输出里还有 2、3核心(截图未完整显示)%usr用户态 CPU 使用率(应用程序、脚本等用户空间程序占用 CPU 比例) 0.00数值越高,用户程序越繁忙 %nice调整过优先级( nice值)的用户态 CPU 使用率0.00通常为 0(少用优先级调整时) %sys内核态 CPU 使用率(系统内核功能、驱动等占用 CPU 比例) 0.25(all行)数值高可能因内核任务多(如 I/O 调度) %iowaitCPU 等待 I/O 耗时比例(因磁盘、网络等 I/O 阻塞,CPU 空闲等待的时间) 0.00高值可能表示存储 / 网络性能瓶颈 %irq硬件中断(如键盘、磁盘控制器触发)占用 CPU 比例 0.00通常较低,驱动异常时可能升高 %soft软件中断(内核内部触发的中断)占用 CPU 比例 0.00同上,异常时需关注 %steal虚拟机场景下,被宿主机 “偷走” 的 CPU 时间(仅虚拟机内可见) 0.00物理机无此损耗,虚拟机需关注 %guest运行虚拟机客户机(如 KVM 虚机)占用的 CPU 比例 0.00无虚拟机时通常为 0 %gnice调整过优先级的虚拟机客户机 CPU 使用率 0.00同上,少用场景为 0 %idleCPU 空闲比例(完全无任务时的空闲时间) 99.75(all行)
2. 内存监控
|
命令 |
功能 |
关键参数/输出 |
场景 |
|---|---|---|---|
|
|
内存使用情况(人类可读) |
|
**关键指标:关键指标: |
|
|
内存、进程、I/O 综合统计 |
|
内存不足或 I/O 瓶颈 |
|
|
内存使用率历史数据 |
|
长 |
1. free -h
分类 字段 含义 & 示例值 补充说明 内存 total总物理内存: 3.8G系统总内存约 3.8GB used已用内存: 765M实际被程序占用的内存 free空闲内存: 2.4G完全未被使用的 “纯空闲” 内存 buff/cache缓存内存: 690M用于磁盘缓存(可释放给程序) available可用内存: 2.8G程序实际可申请的内存(含可回收缓存) 交换分区 total总交换空间: 4.0G硬盘模拟的 “虚拟内存” 总大小 used已用交换: 0B未用到交换分区(性能好) free空闲交换: 4.0G交换分区剩余空间 总结:系统物理内存充足(总 3.8G,已用仅 765M,可用 2.8G ),且未用到交换分区(Swap 用 0B ),内存状态非常健康,无内存压力~
2. vmstat 1 5
3. sar -r 1 5
3. 磁盘 I/O 监控
|
命令 |
功能 |
关键参数/输出 |
场景 |
|---|---|---|---|
|
|
磁盘 I/O 性能(扩展模式) |
|
瓶颈判断: |
|
|
磁盘分区空间使用率 |
|
磁盘空间告 |
1.
iostat -dx 1 5
分类 字段 / 列名 含义 & 示例值 补充说明 磁盘设备 Device磁盘设备名: scd0、sdasda通常是主硬盘,scd0可能是光驱I/O 指标 tps每秒 I/O 操作数: scd0: 0.00sda: 0.44数值越高,磁盘越繁忙 kB_read/s每秒读数据量(kB): scd0: 0.02sda: 15.91读吞吐量,反映读性能 kB_wrtn/s每秒写数据量(kB): scd0: 0.00sda: 1.25写吞吐量,反映写性能 累计统计 kB_read累计读总量(kB): scd0: 1050sda: 676095系统启动以来的读总数据量 kB_wrtn累计写总量(kB): scd0: 0sda: 53193系统启动以来的写总数据量 关键结论
sda(主硬盘):有一定读写活动(tps=0.44、kB_read/s=15.91、kB_wrtn/s=1.25),但整体负载低,属于正常使用状态。scd0(可能是光驱):读写极少(tps=0.00、kB_wrtn/s=0.00),符合光驱低使用场景。
系统磁盘 I/O 压力小,无明显性能瓶颈。
4. 网络监控
|
命令 |
功能 |
关键参数/输出 |
场景 |
|---|---|---|---|
|
|
网络接口流量统计 |
|
带宽瓶颈或丢包问题 |
|
|
监听端口与连接状态 |
|
检查服务端口是否正常 |
|
|
网络协议统计(TCP/UDP/ICMP) |
|
网络层问题分析 |
1.
sar -n DEV 1 52.
ss -tuln
3. netstat -s
5. 综合监控工具
|
工具 |
功能 |
特点 |
|---|---|---|
|
|
CPU/内存/磁盘/网络一体化监控 |
|
|
|
跨平台系统监控(Web/终端) |
支持插件扩展,可监控 Docker、传感器等 |
|
|
实时性能监控 + 数据导出 |
生成 CSV 报告用于长期分析 |
二、性能调优(优化)
1. CPU 调优
|
场景 |
调优策略 |
命令/配置 |
|---|---|---|
|
进程 CPU 绑定 |
减少跨 CPU 核心切换开销 |
|
|
中断亲和性 |
分散网卡中断到不同 CPU 核心 |
|
|
CPU 频率调节 |
固定高性能模式(省电场景用 |
|
|
减少上下文切换 |
降低线程数或使用异步 I/O |
优化应用代码(如使用 Nginx 的 |
2. 内存调优
|
场景 |
调优策略 |
命令/配置 |
|---|---|---|
|
减少 Swap 使用 |
避免内存频繁交换到磁盘(需确保物理内存充足) |
|
|
调整脏页回写 |
减少磁盘写频率,提升写性能 |
|
|
启用大页内存 |
减少 TLB Miss(适用于数据库、虚拟化) |
|
|
OOM Killer 保护 |
防止关键进程被杀 |
|
3. 磁盘 I/O 调优
|
场景 |
调优策略 |
命令/配置 |
|---|---|---|
|
更换 I/O 调度器 |
SSD 用 |
|
|
调整队列深度 |
提高并发 I/O 能力(SSD 可设 256-1024) |
|
|
启用读写预取 |
提升顺序读写性能 |
|
|
文件系统挂载优化 |
禁用访问时间更新、启用写回模式 |
|
4. 网络调优
|
场景 |
调优策略 |
命令/配置 |
|---|---|---|
|
调整 TCP 缓冲区 |
高带宽或高延迟网络需增大缓冲区 |
|
|
启用 BBR 拥塞算法 |
提升高丢包网络吞吐量(需内核 ≥4.9) |
|
|
连接复用 |
减少 TIME_WAIT 连接 |
|
|
增大连接跟踪表 |
高并发服务器(如 NAT 网关) |
|
三、调优实战案例
场景:Web 服务器响应缓慢
1.监控诊断:
top # 发现 CPU 占用 90%,负载 15(8核机)
vmstat 1 # 显示 r(运行队列)>10,so(Swap Out)>0
free -h # available 内存仅 500MB(总 16GB)
结论:CPU 瓶颈 + 内存不足导致 Swap。
2.调优措施
2.1 应用层
# 优化 Nginx 配置(减少 worker 数)
worker_processes auto;
worker_connections 512; # 原值 1024
# 优化慢 SQL(如添加索引)
EXPLAIN SELECT * FROM users WHERE name='Alice';
2.2 内核层
sysctl vm.swappiness=10 # 减少 Swap
sysctl net.ipv4.tcp_tw_reuse=1 # 复用 TIME_WAIT 连接
硬件:增加内存至 32GB。
3.验证效果
ab -n 10000 -c 100 http://localhost/ # 压力测试
# 结果:TPS 从 200 提升至 800,响应时间从 500ms 降至 120ms
- 安全第一:生产环境调优前 务必备份,
- 单一变量:每次只修改一个参数,避免无法定位问题根源。 3
- 监控先行:调优后持续
sar -u 1 3600记录 1 小时 CPU)。 4 - 工具选择:
- 快速诊断:`
top/vmstat/iostat - 深度分析:
perf/eBPF(bcc-tools) - 长期
Prometheus + Grafana
- 快速诊断:`
五、命令速查表
|
目标 |
命令 |
输出关键字 |
|---|---|---|
|
CPU 瓶颈 |
|
|
|
内存不足 |
|
|
|
磁盘瓶颈 |
|
|
|
网络丢包 |
|
|
|
高负载进程 |
|
第一列高 CPU 进 |
|
Swap 使用 |
|
|
六,Linux内核版本优化
linux内核优化
升级内核
rpm -ivh kernel-3.10...rpm查看内核模块
/lib/modulesuname -r 查看内核版本
3.10.0-957.el7.x86_64内核版本号由3部分组成
3.10.0-957
主版本号
次版本号:次版本号决定该内核是稳定版本还是开发版本 偶数稳定版本 奇数 开发版本
末版本号(修订版本号)查询模块
lsmod |grep xfs
modinfo xfs加载模块
modprobe ext4卸载模块
modprobe -r ext4开启IP转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1sysctl -p /etc/sysctl.conf
开启禁ping
vim /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all = 1sysctl -p /etc/sysctl.conf
更多推荐












所有评论(0)