在生产环境中,Ubuntu 服务器的性能与稳定性直接影响业务连续性、用户体验和成本控制。本文针对 24.04 LTS(及后续版本)提供实用、可操作的优化思路与配置建议,覆盖内核、文件系统、网络、进程调度、内存管理、IO、日志、安全等多个维度。优化分为稳定性优先和性能优先两类,生产环境建议先做稳定性,再逐步追求极致性能。
一、稳定性优先优化
这些调整能显著减少崩溃、重启、OOM、IO 等待等问题。
- 启用 Ubuntu Livepatch(无重启内核补丁)
- 注册 Ubuntu Pro(个人免费):text
sudo pro attach 你的token sudo pro enable livepatch - 好处:大部分内核安全漏洞和严重 bug 可热补丁修复,无需每月重启。
- 注册 Ubuntu Pro(个人免费):
- 内核参数调优(sysctl) 编辑 /etc/sysctl.conf 或新建 /etc/sysctl.d/99-production.conf:text
# 防止 TIME_WAIT 端口耗尽(高并发场景) net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 0 # 现代内核已弃用,设0避免问题 # 增大连接数 net.core.somaxconn = 65535 net.ipv4.ip_local_port_range = 1024 65535 fs.file-max = 1048576 # 防止 SYN 洪水 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 8192 # OOM 杀进程更温和 vm.overcommit_memory = 1 vm.panic_on_oom = 0 vm.oom_kill_allocating_task = 1 # 内存回收更积极 vm.swappiness = 10 # 默认60,太高容易 swap 抖动 vm.vfs_cache_pressure = 50 # 降低 inode/dentry 回收倾向应用:sudo sysctl –system
- 使用 noatime 或 relatime 挂载选项 编辑 /etc/fstab,在 ext4/xfs 分区添加:text
UUID=xxx / ext4 defaults,noatime 0 1或 relatime(折中方案,记录访问时间但频率低)。
- 日志管理与空间保护
- journald 限制体积: /etc/systemd/journald.conf:text
SystemMaxUse=2G RuntimeMaxUse=512M MaxRetentionSec=90day重启:sudo systemctl restart systemd-journald
- 定期清理:cron 任务每周运行 journalctl –vacuum-time=60d
- journald 限制体积: /etc/systemd/journald.conf:
- 启用 fail2ban + ufw
- fail2ban 防暴力破解
- ufw 只开必要端口,拒绝默认策略
- 定期 needrestart 检查 升级后运行 sudo needrestart,避免服务未重启导致的“旧版本还在跑”问题。
二、性能优先优化
在稳定性基础上,根据实际监控结果针对性调优。
- CPU 与调度器
- 高吞吐场景:切换到 schedutil 或 performance governor(云服务器慎用)text
sudo apt install linux-tools-common linux-tools-$(uname -r) cpupower frequency-set -g performance - 多核高并发:增大 kernel.sched_migration_cost_ns(默认值通常已较优,需测试)
- 高吞吐场景:切换到 schedutil 或 performance governor(云服务器慎用)
- 内存与 Swap
- 关闭或最小化 Swap(生产推荐无 Swap 或极小 Swap 分区)text
sudo swapoff -a sudo sed -i '/swap/d' /etc/fstab - 启用 zram(压缩内存交换,适合内存紧张但 CPU 富裕的机器):text
sudo apt install zram-config或手动配置 50% 物理内存的 zram。
- 关闭或最小化 Swap(生产推荐无 Swap 或极小 Swap 分区)
- 文件系统与 IO 调度
- ext4 → xfs(大文件、多目录场景更好)
- IO 调度器:nvme/ssd 用 none 或 mq-deadlinetext
echo none > /sys/block/nvme0n1/queue/scheduler - 增大读写缓冲:text
vm.dirty_ratio = 10 vm.dirty_background_ratio = 5
- 网络栈优化 高并发 Web/API 服务器:text
net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_congestion_control = bbr # 推荐 BBR 拥塞控制启用 BBR:
textsudo modprobe tcp_bbr echo "tcp_bbr" | sudo tee -a /etc/modules-load.d/modules.conf - Nginx/Apache/PHP-FPM 等应用层调优
- worker_processes = CPU 核数 × 1~2
- worker_connections = 10240+
- open_file_cache 缓存 inode
- fastcgi_buffers / proxy_buffers 增大
三、监控与验证手段
- 实时监控:netdata(一键安装)、prometheus-node-exporter + grafana
- 历史数据:sysstat(sar -u/-r/-d/-n DEV)
- 瓶颈定位:
- CPU 密集:perf top / flamegraph
- IO 等待:iotop、iostat -x 1
- 网络:nload、iftop、ss -s
- 内存泄漏:smem、pmap
四、推荐优化优先级
- 启用 Livepatch + unattended-upgrades(稳定性基石)
- sysctl 网络/内存参数调优
- noatime + journald 限制
- 监控 + 定期巡检(netdata / sar)
- 根据实际瓶颈:BBR、zram、xfs、IO scheduler
五、注意事项与陷阱
- 不要盲目照搬调优参数,必须在压测 + 监控后对比前后差异
- 云服务器(AWS/GCP/Azure)很多参数已被 hypervisor 优化,过度调优可能适得其反
- 内核版本升级后重新验证(尤其是 6.8 → 6.11 系列)
- 任何重大变更前做好快照/备份
通过以上组合,多数 Ubuntu 服务器在相同硬件下可提升 20%~100% 的吞吐能力,同时将月度非计划重启次数降至接近 0。优化是持续迭代的过程,建议每季度复盘一次监控数据与业务表现。