linux内核参数调优核心是按需调整、先测后调,避免盲目修改;需据业务类型(如web高并发、数据库、ssd存储等)定向优化网络、内存、io及cpu相关参数,并通过sysctl -p生效后验证。

服务器系统安装后优化内核参数,核心是让Linux内核更贴合你的硬件配置和业务负载,而不是套用通用模板。关键在于“按需调整、先测后调”,避免盲目修改引发稳定性问题。
明确业务类型再定调优方向
不同服务对资源敏感点完全不同:
- 高并发Web/API服务:重点调网络队列、TCP连接回收、文件描述符上限
- 数据库(MySQL/PostgreSQL):优先压低swappiness、禁用透明大页、调优脏页回写比例
- SSD存储服务器:改I/O调度器为deadline或noop,关闭磁盘预读
- 实时计算或消息队列:关注CPU调度策略(如performance governor)、NUMA绑定、中断亲和性
必须配置的几项基础参数
这些在多数生产环境都建议启用,改动小、收益稳:
-
扩大连接队列:在/etc/sysctl.conf中添加
net.core.somaxconn = 32768net.ipv4.tcp_max_syn_backlog = 65535
防止高并发时连接被丢弃 -
加快TIME-WAIT复用:
net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_fin_timeout = 30
短连接场景下显著减少端口耗尽风险 -
放宽文件句柄限制:
fs.file-max = 2097152
再配合/etc/security/limits.conf设置用户级限制:* soft nofile 65536* hard nofile 200000 -
控制内存换页倾向:
vm.swappiness = 10(数据库建议设为1,纯内存型服务可设为0)
根据硬件特性做针对性调整
参数不是孤立存在的,要结合实际设备选配:
-
SSD硬盘:确认当前调度器并切换
echo deadline > /sys/block/nvme0n1/queue/scheduler
(把nvme0n1换成你的真实设备名;SSD不适用cfq,noop也可用但deadline更稳) -
大内存机器(≥64GB):调整脏页写回节奏
vm.dirty_background_ratio = 5vm.dirty_ratio = 10
避免后台刷盘突然卡住业务写入 -
启用BBR拥塞控制(适合公网服务):
net.ipv4.tcp_congestion_control = bbrnet.core.default_qdisc = fq
生效与验证不能跳过
改完别直接重启,分步确认:
- 执行
sudo sysctl -p加载新配置 - 用
sysctl net.core.somaxconn逐个检查是否生效 - 运行
ss -s看socket统计,cat /proc/net/sockstat查连接状态分布 - 用
iostat -x 1 5观察%util和await是否下降 - 压力测试前后对比QPS、延迟、错误率











