Linux · 2 分钟阅读
Linux 系统性能优化
性能优化的第一原则:先量后调。盲调 sysctl 是大忌。
评估指标
uptime # 1/5/15 分钟负载
top # 实时 CPU
htop # top 的升级版
free -h # 内存
vmstat 1 # 综合
iostat -dx 1 # 磁盘 I/O
mpstat -P ALL 1 # 每核 CPU
CPU
# 调整优先级
nice -n 19 <command>
renice 19 -p <pid>
# CPU 亲和
taskset -pc 0-2 <pid>
# 调度器
cat /sys/block/sda/queue/scheduler
echo mq-deadline > /sys/block/sda/queue/scheduler
桌面 / 交互用
scsi_mq/none,服务器用mq-deadline,NVMe 用none。
内存
# /etc/sysctl.d/99-memory.conf
vm.swappiness = 10
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
# 清理缓存(仅调试用)
echo 3 > /proc/sys/vm/drop_caches
sysctl -w vm.vfs_cache_pressure=50
磁盘
# 文件系统检查
e2fsck -f /dev/sda1
# 挂载参数
mount -o noatime,nodiratime /dev/sda1 /mnt
# 队列调整
echo 1024 > /sys/block/sda/queue/nr_requests
网络
# /etc/sysctl.d/99-network.conf
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 4096
# 网卡多队列
ethtool -L eth0 combined 4
ethtool -G eth0 rx 2048 tx 2048
一些原则
- 先测量再优化:
perf/bpftrace抓热点,不要凭感觉 - 改 sysctl 先在测试机验证,生产一刀切容易翻车
- 滚动重启 + 监控 比"调完一次大改"安全
- 多数性能问题出在应用层,不在内核参数
推荐工具
| 工具 | 用途 |
|---|---|
perf |
CPU 采样、火焰图 |
bpftrace / bcc |
内核/应用动态追踪 |
nicstat |
网卡吞吐 |
iotop / biotop |
进程级 I/O |
Prometheus + Grafana |
长期可视化 |