Ubuntu 服务器性能优化方法
Ubuntu Server(主流 24.04 LTS / 即将普及的 26.04 LTS)性能优化本质上是针对具体工作负载的权衡与微调,而不是盲目套用“万能参数”。 内核默认设置偏向通用性与稳定性(桌面友好 + 低功耗优先),在高并发、高吞吐、生产服务器场景下往往留有大量优化空间。
优化分为四个层次,优先级从高到低:
- 理解瓶颈(监控先行)
- 系统级调优(内核参数、调度器、文件系统)
- 服务级调优(应用自身配置)
- 硬件/架构级调整(NUMA、CPU governor、磁盘调度)
1. 第一步:永远先监控与基准测试
没有基线就没有方向。常见误区是“感觉慢就乱改 sysctl”。
必须掌握的工具组合(2026 年生产标配):
- 实时概览:btop / glances / htop(进程/CPU/内存/IO/网络一屏看全)
- 历史趋势:Netdata(零配置 Web 仪表盘)或 Prometheus + node_exporter
- 启动瓶颈:systemd-analyze blame / critical-chain / plot
- 磁盘 IO:iostat -xmdz 1、iotop
- 网络:ss -m、nstat -az、mtr、iperf3
- 内存压力:vmstat 1 5(看 si/so 列)、free -h -w
关键指标阈值参考(经验值,非绝对):
- CPU iowait > 15–20% → IO 瓶颈
- vm.swappiness 高 + si/so > 0 → 内存压力大
- %util > 85–90% + await > 10–20 ms → 存储饱和
- load average > 核数 × 1.5–2 → 过载
- tcp retrans > 1–2% → 网络问题
2. 内存与 Swap 优化
Linux 内存管理核心参数:vm.swappiness(默认 60)
- swappiness = 0–100:值越高,越倾向提前换出匿名页(进程私有内存)
- 服务器场景:强烈建议降低到 10 或更低(甚至 1–5),尤其 SSD 或内存充足时
- 原因:频繁 swap 导致 IO 爆炸,延迟剧增
- 桌面:10–30 合理;服务器:10 以下常见,极端场景设 0(但不推荐完全禁用 swap)
其他内存相关高收益参数:
- vm.vfs_cache_pressure = 50(默认 100):降低目录/文件元数据回收倾向
- vm.dirty_ratio / vm.dirty_background_ratio:脏页写回比例(数据库/文件服务器调低)
- vm.overcommit_memory = 1(允许 overcommit,适合内存密集型应用)
3. 网络栈优化(高并发/高吞吐服务器必调)
现代服务器网络性能瓶颈往往在内核缓冲区、连接队列、拥塞控制。
高频调优参数(/etc/sysctl.d/99-performance.conf):
- net.core.somaxconn = 8192–65535(监听队列长度)
- net.ipv4.tcp_max_syn_backlog = 8192+
- net.core.rmem_max / wmem_max = 16MB–64MB(接收/发送缓冲最大值)
- net.ipv4.tcp_rmem / tcp_wmem = “4096 131072 16777216″(最小 默认 最大)
- net.ipv4.tcp_fin_timeout = 15–30(缩短 TIME_WAIT)
- net.ipv4.tcp_tw_reuse = 1(重用 TIME_WAIT socket)
- net.ipv4.tcp_congestion_control = bbr(或 bbrv3,如果内核支持)
拥塞控制:
- 默认 cubic → BBR(Google 算法)在高丢包/高延迟链路收益巨大
- Ubuntu 24.04+ 内核已内置 BBRv2/v3 支持
4. CPU 与调度优化
- CPU Governor(cpupower 或 tuned):
- 默认:ondemand / schedutil(平衡功耗)
- 高性能场景:performance(固定最高频)
- 低延迟场景:performance 或自定义 low-latency 内核参数(24.04+ 支持)
- IRQ 平衡:irqbalance 服务(默认启用),大型多核服务器可关闭并手动绑定
- NUMA 感知:numactl –hardware 检查,数据库/内存密集应用用 numactl 绑定
5. 文件系统与 IO 调度
- 调度器(/sys/block/nvmeXnY/queue/scheduler):
- NVMe/SSD:none 或 mq-deadline
- HDD:bfq 或 kyber
- ext4/xfs 挂载选项:
- noatime、nodiratime(减少元数据写)
- 数据盘:discard(TRIM 支持)
- I/O 优先级:ionice -c 1 -n 0 重要进程
6. 其他高收益小调整
- zram / zswap:内存压缩 swap(取代传统 swap 分区,SSD 友好)
- journald:限制大小(SystemMaxUse=2G–5G)
- 透明大页(THP):数据库慎用(建议 never / madvise)
- 打开文件数:fs.file-max = 1000000+,nofile ulimit 65535+
7. 2026 年生产优化决策框架
| 场景 | 优先调优方向 | 预期收益 | 风险等级 |
|---|---|---|---|
| Web/API 高并发 | 网络栈 + somaxconn + BBR | 高 | 中 |
| 数据库(MySQL/PG) | swappiness 10 + THP off + IO | 极高 | 中高 |
| 文件/对象存储 | IO 调度 + dirty_ratio | 高 | 低 |
| 低延迟应用 | CPU performance + low-latency 内核参数 | 高 | 中 |
| 内存吃紧服务器 | zram + swappiness 1–10 | 中高 | 低 |
核心提醒:
- 所有 sysctl 变更先临时测试(sysctl -w),观察 24–48 小时
- 永久生效放 /etc/sysctl.d/99-xxx.conf 而非 sysctl.conf
- 改完 sysctl -p 立即生效
- 基准测试前后对比(ab / wrk / sysbench / fio / iperf3)
- 生产环境变更需变更控制 + 回滚计划
性能优化是持续迭代的过程,不是一劳永逸。 先用监控工具找到真正瓶颈,再针对性调整,才是最高效的路径。