Linux 内核 "一调就翻车" 危险参数清单
下面这份是 真正的「一调就翻车」内核参数黑名单。
特点只有一个:不是性能参数,而是“语义 / 安全 / 正确性”参数,
👉 调错不是“变慢”,而是:断网、丢数据、进程被杀、系统不稳定。
按 风险等级 + 翻车方式 + 正确认知 给你一份可直接纳入运维规范的清单。
结论先行
👉 这些参数 不适合“动态算”
👉 不适合“网上抄一套”
👉 改之前必须知道“你在改变什么系统行为”
vm.overcommit_memory = 2
- PostgreSQL / Redis 启动失败
- Java / Python
malloc failed - K8S Pod 随机启动不了
这是“内存分配策略”,不是性能参数
| 值 | 含义 |
|---|---|
| 0 | 启发式(默认,最安全) |
| 1 | 允许过度分配 |
| 2 | 严格限制(生产最容易翻) |
- 通用服务器:
0 - 数据库专用 + 精确计算:才考虑
2
vm.panic_on_oom = 1
- 一次 OOM -> 整机直接重启
- KVM / 裸机全部业务瞬间消失
这是“系统自杀开关”
- 几乎永远不应该开启
- 只用于极端金融 / 高可用节点
kernel.oom_kill_allocating_task = 1
- 正在写数据的数据库进程被直接杀
- Redis RDB / AOF 中断
谁申请内存就杀谁(不看重要性)
- 保持默认
0 - 用
OOMScoreAdjust精准控制
kernel.numa_balancing = 1
- PostgreSQL / Redis 延迟抖动
- Python / Java 性能不稳定
- CPU 利用率低但性能差
内核自动搬内存页(频繁 TLB 失效)
- 数据库 / 延迟敏感服务:
0 - 桌面 / 通用负载:
1
kernel.sched_autogroup_enabled = 1
- 后台服务 CPU 被“桌面交互”抢走
- 容器调度异常
这是桌面友好策略
- 服务器统一设为
0
net.ipv4.tcp_tw_recycle = 1
- NAT 后客户端大量连接失败
- Web 服务“时好时坏”
违反 TCP 协议设计
- 永远不要配置
- 新内核已移除
net.ipv4.conf.all.rp_filter = 1
- 双网卡 / 多路由服务器无法回包
- K8S / VPN / overlay 网络异常
严格反向路径校验
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.tcp_syncookies = 0
- SYN flood 下直接拒绝连接
- 负载高峰服务雪崩
关闭 TCP 防护机制
- 永远保持
1
vm.swappiness = 0
- 内存紧张时直接 OOM
- 数据库被杀而不是 swap
不是“禁用 swap”,而是“极度厌恶 swap”
| 场景 | 值 |
|---|---|
| 数据库 | 1 |
| 通用服务器 | 10~30 |
| 禁 swap | swapoff |
echo 3 > /proc/sys/vm/drop_caches
- 磁盘 IO 暴增
- 数据库缓存被清空
- 延迟雪崩
这是调试接口,不是优化手段
- 禁止定时执行
- 仅用于一次性测试
nobarrier
- 掉电 -> 文件系统损坏
- 数据库不可恢复
你在告诉内核:底层存储“绝对可靠”
- 仅在 带电池 RAID / 企业级存储 使用
- 云盘 / 本地盘禁止
- 元数据和数据不一致
- 文件“存在但内容错乱”
- 非缓存目录谨慎使用
凡是改变「分配策略 / 网络语义 / 一致性保证 / 安全假设」的内核参数,
都属于“一调就翻车”级别,绝不允许模板化、动态化、照抄。
vm.panic_on_oomtcp_tw_recycledrop_cachesdata=writeback(非缓存目录)
vm.overcommit_memorynobarrierkernel.numa_balancingrp_filter
fs.file-maxpid_maxconntrack_max- TCP buffer