Linux内核调优新手实操指南
很多新手拿到服务器之后,只关注软件安装和配置,忽略了操作系统最底层的内核参数。Linux内核调优就是通过修改内核默认参数,让服务器更好地应对高并发、大流量或者特定业务场景。
下面从零开始,手把手带你完成一次安全的内核调优。
调优前先做这些准备
在动手之前,先确认你的服务器是 CentOS 7/8、Ubuntu 20.04 或更新版本。
登录 SSH 后,执行以下命令查看当前内核参数:
sysctl -a | head -20
你会看到一大串 net.core.somaxconn、vm.swappiness 之类的键值。
不用全部看懂,我们只关注几个关键项。建议先备份现有配置,避免改错无法恢复:
cp /etc/sysctl.conf /etc/sysctl.conf.bak
如果文件不存在(有些系统默认没有),直接新建一个即可。
一步步调整常见内核参数
打开 /etc/sysctl.conf 文件(需 root 权限):
vi /etc/sysctl.conf
在文件末尾追加以下常用调优值。
每行格式都是 参数 = 值,注意等号两边空格。
1. 提升网络并发能力
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 8192
net.core.netdev_max_backlog = 10000
somaxconn控制 socket 监听队列上限,适当提高可以应对瞬时高并发连接。tcp_max_syn_backlog是 TCP 半连接队列大小,对防 SYN 攻击也有帮助。
2. 降低内存换出倾向
vm.swappiness = 10
默认值是 60,改为 10 后系统会尽量少用 swap,优先使用物理内存,适合数据库或计算密集型场景。如果你内存很小(<2GB),不建议改太低,否则可能触发 OOM。
3. 文件打开数限制
fs.file-max = 65535
这个参数影响整个系统能同时打开的文件句柄数,高并发 Web 或 API 服务建议调大。
保存文件后,执行以下命令让参数立即生效:
sysctl -p
如果没有报错,说明所有参数都正确加载了。
新手最容易踩的坑
- 盲目照搬大型网站的参数:比如把
net.ipv4.tcp_tw_reuse和tcp_tw_recycle同时开启,后者在 NAT 环境下会导致连接失败。新手建议只开启tcp_tw_reuse(值为 1),不要动tcp_tw_recycle(新版内核已移除)。 - 一次性改太多:每次先改 2-3 个参数,观察服务器运行一周再继续。如果出现奇怪问题,用备份文件恢复:
cp /etc/sysctl.conf.bak /etc/sysctl.conf && sysctl -p。 - 不验证就上线:改完参数后一定要压测或观察实际业务流量下的表现,避免改动后性能反而下降。
调整后如何判断生效
两种方式验证:
- 直接查看某个参数:
sysctl net.core.somaxconn,输出应为你设置的值。 - 用应用表现反推:例如原本 nginx 报
connection refused增多,调高somaxconn后错误减少,说明生效。
如果希望参数在服务器重启后也自动加载,只要确认 /etc/sysctl.conf 中存在相应行即可。
遇到问题别慌,先回看这几步
如果你在调整 Linux内核调优 时遇到了服务器异常、端口无法访问或应用报错,先从以下三点排查:
- 检查
sysctl -p输出是否有error: permission denied或未知参数,删掉错误行。 - 看
/var/log/messages或journalctl -xe中是否有与内核参数相关的告警。 - 用备份
sysctl.conf.bak快速恢复。
记住,调优不是一次搞定的,需要基于你的业务特征不断微调。
建议先按本文步骤完整执行,再根据自己的服务器负载逐步优化其他参数。