Linux 系统调优场景化指南
按应用类型 + 操作系统分类的精细化调优策略
适用于 CentOS/RHEL 7+/8+、Ubuntu 20.04+/22.04+、Debian 11+
通用原则
| 原则 |
说明 |
| 先监控后调优 |
使用 sar、bpftrace、perf 定位瓶颈 |
| 避免过度调优 |
仅优化实际瓶颈,非瓶颈参数保持默认 |
| 备份配置 |
修改前执行 cp /etc/sysctl.conf /etc/sysctl.conf.bak-$(date +%Y%m%d) |
| 灰度验证 |
在测试环境压测后再上线 |
1. 反向代理 / API 网关(Nginx, Envoy)
特征:高并发连接、短连接/长连接混合、大量 TIME_WAIT
✅ 调优重点
- 网络连接队列
- TIME_WAIT 快速回收
- 文件描述符上限
- TCP 缓冲区
🐧 通用配置(CentOS/Ubuntu/Debian)
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
fs.file-max = 2097152
⚙️ 服务级限制(systemd)
[Service]
LimitNOFILE=131072
📌 操作系统差异
| 系统 |
注意事项 |
| CentOS 7 |
默认内核较旧,建议升级至 5.4+ LTS 内核以支持 BBR |
| Ubuntu 22.04 |
默认启用 irqbalance,可保留自动优化中断 |
| Debian 11 |
THP 默认启用,需手动禁用(见数据库章节) |
2. Web 应用服务器(Node.js, Java, PHP-FPM)
特征:中等并发、CPU 密集型(Java)、内存敏感(Node.js)
✅ 调优重点
- 进程/线程限制
- 虚拟内存 swappiness
- CPU 调度(Java GC 友好)
- 文件系统 noatime
🐧 通用配置
vm.swappiness = 1
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
fs.file-max = 1048576
⚙️ 用户级限制(/etc/security/limits.conf)
webuser soft nproc 32768
webuser hard nproc 32768
webuser soft nofile 65536
webuser hard nofile 65536
📌 按语言特殊优化
| 语言 |
建议 |
| Java |
-XX:+UseG1GC,绑定 NUMA 节点:numactl --cpunodebind=0 --membind=0 java ... |
| Node.js |
设置 UV_THREADPOOL_SIZE=8(默认 4),避免阻塞 I/O |
| PHP-FPM |
调整 pm.max_children,避免 OOM |
📌 操作系统差异
| 系统 |
注意事项 |
| RHEL 8+ |
默认启用 tuned,可切换 profile:tuned-adm profile latency-performance |
| Ubuntu |
默认使用 ext4,挂载加 noatime,nodiratime |
3. 数据库(MySQL, PostgreSQL, Redis)
特征:I/O 密集、内存敏感、低延迟要求、禁用 THP
✅ 调优重点
- 禁用透明大页(THP)
- I/O 调度器(deadline/mq-deadline)
- 脏页刷写控制
- NUMA 绑定
🐧 通用配置
vm.swappiness = 1
vm.dirty_background_ratio = 5
vm.dirty_ratio = 15
vm.dirty_expire_centisecs = 6000
vm.dirty_writeback_centisecs = 500
⚙️ 磁盘挂载选项(/etc/fstab)
/dev/nvme0n1 /var/lib/mysql ext4 defaults,noatime,nodiratime,barrier=0 0 0
/dev/sdb1 /var/lib/postgresql xfs defaults,noatime,allocsize=64k 0 0
📌 数据库专用建议
| 数据库 |
建议 |
| MySQL |
innodb_flush_method=O_DIRECT,避免双缓冲 |
| PostgreSQL |
shared_buffers = 25% RAM,effective_cache_size = 50-75% RAM |
| Redis |
echo never > /sys/kernel/mm/transparent_hugepage/enabled(启动脚本中) |
📌 操作系统差异
| 系统 |
注意事项 |
| CentOS 7 |
默认调度器为 cfq,需手动改为 deadline |
| Ubuntu 22.04 |
默认文件系统 ext4,支持 barrier=0(仅安全硬件) |
| RHEL 9 |
提供 tuned profile:tuned-adm profile oltp |
4. 音视频服务(RTMP, WebRTC, HLS)
特征:高带宽、低抖动、UDP/TCP 混合、实时性要求高
✅ 调优重点
- 网络缓冲区(尤其 UDP)
- CPU 隔离(避免调度抖动)
- 关闭节能模式
- 增大 socket buffer
🐧 通用配置
net.core.rmem_default = 262144
net.core.rmem_max = 268435456
net.core.wmem_default = 262144
net.core.wmem_max = 268435456
net.ipv4.udp_rmem_min = 8388608
net.ipv4.udp_wmem_min = 8388608
kernel.sched_rt_runtime_us = 950000
⚙️ CPU 隔离(/etc/default/grub)
GRUB_CMDLINE_LINUX="... isolcpus=4-7 nohz_full=4-7 rcu_nocbs=4-7"
重启后,将流媒体进程绑定到 CPU 4-7:
taskset -c 4-7 ./ffmpeg-server
📌 操作系统差异
| 系统 |
注意事项 |
| Ubuntu 20.04+ |
支持 PREEMPT_RT 补丁(需自行编译内核) |
| CentOS Stream |
默认内核支持 SCHED_FIFO,适合实时任务 |
5. 大数据与实时计算(Kafka, Flink, Spark)
特征:高吞吐 I/O、大内存、网络密集、JVM 应用
✅ 调优重点
- 大页内存(HugeTLB)
- I/O 调度器(mq-deadline)
- 网络缓冲区
- 关闭 NUMA balancing
🐧 通用配置
vm.swappiness = 1
vm.dirty_ratio = 40
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
kernel.numa_balancing = 0
⚙️ HugeTLB 配置(/etc/sysctl.conf)
vm.nr_hugepages = 10240
📌 组件专用建议
| 组件 |
建议 |
| Kafka |
日志目录独立磁盘,ext4 挂载加 data=journal |
| Flink |
TaskManager 绑定 NUMA 节点,避免跨 CPU 访问内存 |
| Spark |
Executor 内存 ≤ 32GB(避免 G1GC 停顿过长) |
📌 操作系统差异
| 系统 |
注意事项 |
| RHEL 8+ |
支持 tuned profile:throughput-performance |
| Debian 11 |
默认未启用大页,需手动配置 |
6. 容器平台(Kubernetes Node)
特征:多租户、资源隔离、cgroup v1/v2、内核模块依赖
✅ 调优重点
- cgroup 驱动一致性(systemd vs cgroupfs)
- 内核参数继承
- 关闭 swap(K8s 强制要求)
- 网络插件优化(Calico/Cilium)
🐧 通用配置
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
fs.inotify.max_user_watches = 1048576
⚙️ 禁用 swap
sudo swapoff -a
📌 操作系统差异
| 系统 |
推荐配置 |
| Ubuntu 22.04 |
默认 cgroup v2,K8s 1.25+ 原生支持 |
| CentOS 7 |
必须使用 cgroup v1,Docker 需配置 "exec-opts": ["native.cgroupdriver=systemd"] |
| RHEL 8+ |
启用 container-tools 模块,使用 Podman 替代 Docker |
附录:操作系统差异速查表
| 调优项 |
CentOS/RHEL 7 |
CentOS/RHEL 8/9 |
Ubuntu 20.04 |
Ubuntu 22.04 |
Debian 11 |
| 默认文件系统 |
xfs |
xfs |
ext4 |
ext4 |
ext4 |
| 默认 I/O 调度器 |
cfq |
mq-deadline |
mq-deadline |
mq-deadline |
mq-deadline |
| THP 状态 |
enabled |
enabled |
enabled |
enabled |
enabled |
| 包管理 |
yum/dnf |
dnf |
apt |
apt |
apt |
| 服务管理 |
systemd |
systemd |
systemd |
systemd |
systemd |
| 内核版本 |
3.10 |
4.18+ |
5.4+ |
5.15+ |
5.10+ |
| 推荐 tuned profile |
- |
latency-performance / throughput-performance |
- |
- |
- |
💡 统一建议:
- 所有生产服务器 禁用 THP
- 所有服务器 设置 vm.swappiness=1
- Web/DB 服务器 关闭透明大页
- 高并发服务器 增大 net.core.somaxconn
最后更新:2026年1月22日