服务器设置和教程 · 6 2 月, 2026

Ubuntu 服务器性能与稳定性优化

在生产环境中,Ubuntu 服务器的性能与稳定性直接影响业务连续性、用户体验和成本控制。本文针对 24.04 LTS(及后续版本)提供实用、可操作的优化思路与配置建议,覆盖内核、文件系统、网络、进程调度、内存管理、IO、日志、安全等多个维度。优化分为稳定性优先性能优先两类,生产环境建议先做稳定性,再逐步追求极致性能。

一、稳定性优先优化

这些调整能显著减少崩溃、重启、OOM、IO 等待等问题。

  1. 启用 Ubuntu Livepatch(无重启内核补丁)
    • 注册 Ubuntu Pro(个人免费):
      text
      sudo pro attach 你的token
      sudo pro enable livepatch
    • 好处:大部分内核安全漏洞和严重 bug 可热补丁修复,无需每月重启。
  2. 内核参数调优(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

  3. 使用 noatime 或 relatime 挂载选项 编辑 /etc/fstab,在 ext4/xfs 分区添加:
    text
    UUID=xxx   /   ext4   defaults,noatime   0 1

    或 relatime(折中方案,记录访问时间但频率低)。

  4. 日志管理与空间保护
    • journald 限制体积: /etc/systemd/journald.conf:
      text
      SystemMaxUse=2G
      RuntimeMaxUse=512M
      MaxRetentionSec=90day

      重启:sudo systemctl restart systemd-journald

    • 定期清理:cron 任务每周运行 journalctl –vacuum-time=60d
  5. 启用 fail2ban + ufw
    • fail2ban 防暴力破解
    • ufw 只开必要端口,拒绝默认策略
  6. 定期 needrestart 检查 升级后运行 sudo needrestart,避免服务未重启导致的“旧版本还在跑”问题。

二、性能优先优化

在稳定性基础上,根据实际监控结果针对性调优。

  1. 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(默认值通常已较优,需测试)
  2. 内存与 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。

  3. 文件系统与 IO 调度
    • ext4 → xfs(大文件、多目录场景更好)
    • IO 调度器:nvme/ssd 用 none 或 mq-deadline
      text
      echo none > /sys/block/nvme0n1/queue/scheduler
    • 增大读写缓冲:
      text
      vm.dirty_ratio = 10
      vm.dirty_background_ratio = 5
  4. 网络栈优化 高并发 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:

    text
    sudo modprobe tcp_bbr
    echo "tcp_bbr" | sudo tee -a /etc/modules-load.d/modules.conf
  5. 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

四、推荐优化优先级

  1. 启用 Livepatch + unattended-upgrades(稳定性基石)
  2. sysctl 网络/内存参数调优
  3. noatime + journald 限制
  4. 监控 + 定期巡检(netdata / sar)
  5. 根据实际瓶颈:BBR、zram、xfs、IO scheduler

五、注意事项与陷阱

  • 不要盲目照搬调优参数,必须在压测 + 监控后对比前后差异
  • 云服务器(AWS/GCP/Azure)很多参数已被 hypervisor 优化,过度调优可能适得其反
  • 内核版本升级后重新验证(尤其是 6.8 → 6.11 系列)
  • 任何重大变更前做好快照/备份

通过以上组合,多数 Ubuntu 服务器在相同硬件下可提升 20%~100% 的吞吐能力,同时将月度非计划重启次数降至接近 0。优化是持续迭代的过程,建议每季度复盘一次监控数据与业务表现。