Ubuntu Server 性能优化最佳实践
Ubuntu Server(以24.04 LTS及后续点版本为主)在默认配置下已针对通用服务器负载进行了良好平衡,但实际生产环境中,Web服务、数据库、容器集群、AI推理等特定工作负载往往需要针对性调优。性能优化不是盲目堆参数,而是理解瓶颈 → 测量 → 针对性调整 → 验证的迭代过程。
以下内容聚焦服务器常见场景,优先级从高到低排列,强调理论依据与实际收益。
1. 基准测试与瓶颈定位(优化前提)
没有测量就没有优化。盲目调参常导致次优或负面效果。
核心工具(Ubuntu 24.04+ 默认或易安装):
- top / htop → 快速看CPU/内存/IO等待
- iotop / iostat → 磁盘IO瓶颈
- vmstat / sar → 系统整体统计(需sysstat包)
- perf → 内核级性能剖析(sudo apt install linux-tools-common linux-tools-$(uname -r))
- sysbench → 简单CPU/内存/IO/数据库基准
- stress-ng → 压力生成与测试
- mpstat / pidstat → 多核/进程级指标
推荐起点流程:
- mpstat 1 10 观察 %usr / %sys / %iowait / %steal
- 高 %iowait → 重点查磁盘
- 高 %steal(VPS常见)→ 云超售或CPU争抢,考虑升级实例或调亲和性
- 高 %sys → 内核开销大,可能需调调度、网络栈
- 运行 sysbench cpu --threads=$(nproc) run 与 sysbench fileio --file-total-size=10G --file-test-mode=rndrw run 获取基线
2. CPU 子系统调优
现代Intel/AMD服务器CPU默认使用 schedutil 或 ondemand governor(动态调频),服务器场景常需更激进策略。
主要调整点
- 切换到 performance governor(恒定最高主频) 适用于延迟敏感负载(数据库、游戏服、实时推理)。 命令:sudo apt install cpufrequtils → echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 永久化:创建 /etc/systemd/system/cpu-performance.service 或使用 TuneD。
- Energy Performance Preference (EPP)(Intel 12代+ / AMD Zen4+ 支持) 通过 power profiles 或内核参数控制性能-功耗平衡。 推荐服务器值:balance_performance 或直接 performance 检查:cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference 设置:echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference
- TuneD 动态/静态调优(Ubuntu官方推荐工具) sudo apt install tuned 常用profile:
- throughput-performance(吞吐优先,高性能通用)
- latency-performance(最低延迟,适合数据库/低延迟网络)
- virtual-guest(VPS/云实例专用,减少虚拟化开销) 启用:sudo tuned-adm profile throughput-performance
- IRQ 中断亲和性 与 进程绑定 高流量网卡中断绑定到特定核,避免跨NUMA跳跃。 示例:irqbalance 服务(默认启用)通常够用,高负载可手动 set_irq_affinity.sh 脚本。
3. 内存管理优化
服务器内存紧张时,swap是最大杀手。
- Swappiness:默认60(倾向较早换出),服务器建议10–20。 永久设置:echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf → sudo sysctl -p
- zram(压缩内存交换,最推荐替代传统swap) Ubuntu Server 24.04+ 可直接 sudo apt install zram-config 原理:将不活跃页面压缩存于RAM而非磁盘,SSD环境下避免写放大与延迟尖峰。 收益:内存压力下系统不卡死,延迟增加可控(通常<50ms)。
- Transparent Huge Pages (THP) 默认 madvise,数据库(如PostgreSQL、Redis)建议 never 或 defer+madvise。 检查:cat /sys/kernel/mm/transparent_hugepage/enabled 建议禁用:echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
4. 磁盘 I/O 与文件系统调优
- I/O 调度器 NVMe/SSD → none 或 mq-deadline(默认通常已优) 检查:cat /sys/block/nvme0n1/queue/scheduler 设置:echo none | sudo tee /sys/block/nvme*/queue/scheduler
- 文件系统 mount 选项 ext4/xfs 常用:text
noatime,nodiratime高写负载(如日志、数据库)加 discard(TRIM支持)
- 写缓存策略 数据库服务器禁用 writeback cache(hdparm -W 0 /dev/sdX),防止断电数据丢失。
5. 网络栈优化(高并发场景)
- 增大缓冲区text
net.core.somaxconn = 65535 net.core.netdev_max_backlog = 5000 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216写入 /etc/sysctl.conf
- TCP 拥塞控制 默认 cubic,BBR 更适合高延迟/丢包链路(云间、跨国)。 启用:sudo sysctl net.ipv4.tcp_congestion_control=bbr
- 关闭不必要服务(减少上下文切换) sudo systemctl disable bluetooth cups snapd 等(视需求)
6. 其他高收益实践
- 禁用 mitigations(安全换性能,慎用) 如 Spectre/Meltdown 缓解:mitigations=off(boot 参数),可提升5–30% CPU密集任务,但大幅增加安全风险。
- 内核参数微调(sysctl)text
vm.dirty_ratio = 10 vm.dirty_background_ratio = 5 kernel.sched_migration_cost_ns = 500000 - 容器/虚拟化场景
- cgroup v2 默认启用,限制 burst。
- Docker:--cpus、--memory 严格限制。
- KVM:virtio-scsi + 多队列。
7. 推荐调优组合(按场景)
| 场景 | 核心调整组合 | 预期收益 |
|---|---|---|
| Web/API 高并发 | TuneD throughput-performance + BBR + swappiness=10 + zram | 吞吐+20–50% |
| 数据库(PG/MySQL) | latency-performance + THP=never + I/O scheduler none + 大缓冲 | 延迟-30–70% |
| AI/推理负载 | performance governor + EPP=performance + zram + irqbalance关 | FPS/吞吐+15–40% |
| VPS/云实例 | virtual-guest profile + zram + 降低 swappiness + 监控 steal | 稳定性显著提升 |
| 通用文件/对象存储 | xfs + noatime + writeback cache开 + 多队列 | IO吞吐+30%+ |
结语与注意事项
- 先测后调:优化前记录基线,调后用相同压力测试对比。
- 可逆性:sysctl 和 governor 调整可随时回滚,TuneD profile 切换秒级生效。
- 监控长期效果:用 Prometheus + node_exporter 观察调优前后曲线。
- 安全权衡:禁用 mitigations、增大缓冲等操作需评估风险。
- 云环境特殊性:AWS Graviton、Ampere ARM 实例对 governor/EPP 支持不同;VPS 高 steal 时优先升级套餐而非内核调参。
大多数生产环境经过上述3–5项调整即可获得可观的稳定性与吞吐提升。真正极致性能往往来自应用层(Nginx worker、数据库索引、代码优化),而非操作系统微调。
版权声明:
作者:后浪云
链接:https://idc.net/help/442439/
文章版权归作者所有,未经允许请勿转载。
THE END
