Linux 系统调优工具与实践指南
目录
一、系统调优工具概述
二、CPU 负载监控工具
1. uptime(快速查看负载)
2. top(实时进程监控)
3. ps(定位高 CPU 进程)
4. mpstat(CPU 核心详细统计)
三、内存状态监控工具
1. free(内存使用概览)
2. /proc/meminfo(详细内存信息)
3. 定位高内存进程
四、磁盘 I/O 监控工具
1. 查看文件系统块大小
2. iostat(磁盘 I/O 统计)
3. dd(磁盘速度测试)
4. iotop(实时 I/O 进程监控)
五、网络状态监控工具
1. nload(实时带宽监控)
2. nethogs(进程网络占用)
3. ab(HTTP 压测辅助)
六、系统整体状态工具
1. vmstat(多维度统计)
2. sar(历史与实时统计)
七、系统调优实践
1. CPU 调优
(1)调整进程优先级(nice 值)
(2)CPU 亲和力绑定(taskset)
(3)CPU 信息查询
2. 磁盘 I/O 调优
(1)资源限制(ulimit)
3. 内核参数调优(防御 SYN 洪水)
4. 网卡绑定(Bonding)
主备模式配置(常用)
八、调优总结
一、系统调优工具概述
核心工具包:需提前安装 sysstat
(含 sar、iostat、mpstat)、iotop
、nethogs
、nload
。
调优维度:CPU、内存、磁盘 I/O、网络,需结合工具输出判断子系统瓶颈及相互影响。
二、CPU 负载监控工具
1. uptime(快速查看负载)
uptime # 输出:时间 运行时间 登录用户数 1/5/15分钟平均负载
- 判断标准:1 分钟负载 > CPU 核心数 → 系统可能过载(需结合 5/15 分钟趋势)。
2. top(实时进程监控)
top # 按P键按CPU使用率降序排列
3. ps(定位高 CPU 进程)
ps -aux --sort -pcpu | head -10 # 显示CPU使用率前10的进程
4. mpstat(CPU 核心详细统计)
mpstat -P ALL 1 5 # 显示所有CPU核心,1秒采样1次,共5次
- 关键指标:
%usr
:用户态 CPU 占比%sys
:内核态 CPU 占比%iowait
:I/O 等待占比(高则 I/O 瓶颈)%idle
:空闲占比(低则 CPU 过载)
三、内存状态监控工具
1. free(内存使用概览)
free -m # 以MB为单位显示内存
- 核心指标:
available
(实际可用内存,含可回收缓存)。
2. /proc/meminfo(详细内存信息)
cat /proc/meminfo # 关注Active(活跃内存)、Inactive(可换出内存)
3. 定位高内存进程
# 方法1:top按内存排序(按M键)
# 方法2:ps筛选
ps -aux --sort -rss | head -10 # 按物理内存(rss)降序
四、磁盘 I/O 监控工具
1. 查看文件系统块大小
文件系统 | 命令 | |
---|---|---|
EXT4 | `tune2fs -l /dev/sda1 | grep "Block size"` |
XFS | `xfs_growfs -l /dev/sda1 | grep bsize` |
2. iostat(磁盘 I/O 统计)
iostat -d -k -p /dev/sda 1 5 # 仅显示磁盘,KB单位,1秒采样5次
- 关键指标:
kB_read/s
(每秒读)、kB_wrtn/s
(每秒写)。
3. dd(磁盘速度测试)
# 写速度测试(跳过缓存)
dd if=/dev/zero of=testfile bs=1M count=1000 oflag=direct; sync
# 读速度测试
hdparm -t --direct /dev/sda
4. iotop(实时 I/O 进程监控)
iotop -o -d 1 # 仅显示活跃I/O进程,1秒刷新
五、网络状态监控工具
1. nload(实时带宽监控)
nload # 显示Incoming/Outgoing实时流量(Curr/Avg/Max/Ttl)
2. nethogs(进程网络占用)
nethogs # 按进程显示网络带宽使用
3. ab(HTTP 压测辅助)
ab -n 1000 -c 2 http://www.baidu.com/ # 1000请求,并发2
- 核心指标:
Requests per second
(吞吐量)、Time per request
(响应时间)。
六、系统整体状态工具
1. vmstat(多维度统计)
vmstat 1 5 # 1秒采样5次,输出进程、内存、I/O、CPU信息
- 关键指标:
r
:运行队列长度(>CPU 核心数 ×3 则繁忙)b
:阻塞进程数(高则 I/O 繁忙)si/so
:swap 换入 / 换出(非 0 则内存不足)wa
:I/O 等待 CPU 时间(>20% 则 I/O 瓶颈)
2. sar(历史与实时统计)
# 记录CPU到文件
sar -u 2 5 -o cpu.sar
# 查看内存
sar -r 1 5
# 查看网络
sar -n DEV 1 5
# 读取历史记录
sar -u -f cpu.sar
- 历史日志:
/var/log/sa/saXX
(XX 为日期)。
七、系统调优实践
1. CPU 调优
(1)调整进程优先级(nice 值)
nice -n -5 vim a.txt # 启动时设优先级(-20最高,19最低)
renice -n 6 24318 # 修改运行中进程优先级(24318为PID)
(2)CPU 亲和力绑定(taskset)
taskset -c 0 vim a.txt # 绑定进程到CPU0
taskset -cp 20146 # 查看进程20146的CPU绑定
taskset -c 1,3 vim b.txt # 绑定到CPU1和3
(3)CPU 信息查询
# 物理CPU数量
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
# 逻辑CPU数量
cat /proc/cpuinfo | grep "processor" | wc -l
# CPU核心数
cat /proc/cpuinfo | grep "cpu cores" | uniq
2. 磁盘 I/O 调优
(1)资源限制(ulimit)
编辑配置文件 /etc/security/limits.conf
:
* soft nofile 1024000 # 软限制:文件描述符
* hard nofile 1024000 # 硬限制:文件描述符
* soft nproc 65535 # 软限制:进程数
* hard nproc 65535 # 硬限制:进程数
- 临时生效:
ulimit -n 10000
- 查看限制:
ulimit -n
(软)、ulimit -Hn
(硬)
3. 内核参数调优(防御 SYN 洪水)
编辑 /etc/sysctl.conf
:
net.ipv4.tcp_synack_retries = 0 # 不重发SYN+ACK
net.ipv4.tcp_syncookies = 1 # 启用SYN Cookie
net.ipv4.tcp_max_syn_backlog = 20480# 半连接队列长度
net.ipv4.tcp_tw_reuse = 1 # 复用TIME_WAIT连接
fs.file-max = 819200 # 系统最大文件句柄
net.core.somaxconn = 65535 # 连接队列长度
- 生效命令:
sysctl -p
4. 网卡绑定(Bonding)
主备模式配置(常用)
# 创建bond0
nmcli connection add type bond ifname bond0 con-name bond0 miimon 100 mode active-backup ip4 192.168.1.63/24
# 添加从网卡
nmcli connection add type bond-slave ifname ens33 master bond0
nmcli connection add type bond-slave ifname ens38 master bond0
- 验证:
cat /proc/net/bonding/bond0
八、调优总结
模块 | 核心工具 | 调优手段 | 适用场景 |
---|---|---|---|
CPU | top、mpstat、vmstat | nice、taskset、绑定核心 | 高 CPU 负载、进程调度优化 |
内存 | free、/proc/meminfo | 调整 swap 策略、限制进程内存 | 内存泄漏排查、资源争用 |
磁盘 I/O | iostat、iotop、dd | ulimit、文件系统优化、RAID 配置 | 高并发读写、备份任务 |
网络 | nload、nethogs、sar | 网卡绑定、内核参数、带宽限制 | 高可用、防 SYN 攻击 |
内核 | sysctl、/proc/sys | 网络队列、文件句柄、进程限制 | 高并发服务、安全加固 |