麒麟os内核参数调优需按优先级顺序加载:/etc/sysctl.d/*.conf > /etc/sysctl.conf > 内核默认值;推荐使用sudo sysctl --system加载独立配置文件(如99-kylin-tuning.conf),避免sysctl -p仅读取/etc/sysctl.conf导致覆盖失效,并须验证proc值、来源及真实负载压测效果。

您在麒麟OS上运行高并发服务、实时业务或容器平台时,发现连接拒绝、内存回收异常、吞吐瓶颈或TIME_WAIT堆积,很可能是内核默认参数未匹配实际负载。直接修改内核参数是系统级调优最核心的一步,必须分层操作、逐级验证。
确认当前生效的内核参数文件路径
麒麟OS V10 SP1+ 使用 systemd-sysctl 机制加载参数,优先级顺序为:【/etc/sysctl.d/*.conf > /etc/sysctl.conf > 内核编译默认值】。若只改 /etc/sysctl.conf 但存在同名参数在 /etc/sysctl.d/ 下,后者会覆盖前者。
执行命令查看当前所有已加载参数的来源:sudo sysctl --system 2>&1 | grep "applying"
重点检查输出中是否包含 /etc/sysctl.d/99-custom.conf 或类似路径——这是推荐的自定义参数存放位置,避免与系统更新冲突。
永久修改内核参数(推荐方式)
方法一:写入独立配置文件(最安全)
1、创建专用配置文件:sudo tee /etc/sysctl.d/99-kylin-tuning.conf net.ipv4.tcp_max_syn_backlog = 65535
net.core.somaxconn = 65535
vm.swappiness = 10
fs.file-max = 1048576
EOF
2、立即加载该文件:sudo sysctl --system
3、验证某项是否生效:sudo sysctl net.core.somaxconn
注意:不要用 sysctl -p,它只读取 /etc/sysctl.conf;--system 才会按完整优先级顺序重载全部配置。
临时修改内核参数(调试专用)
该操作仅在当前运行内核中生效,重启即失效,适用于快速验证某参数效果是否符合预期。
1、直接写入 proc 接口:sudo sh -c 'echo 65535 > /proc/sys/net/core/somaxconn'
2、或使用 sysctl -w:sudo sysctl -w net.ipv4.tcp_tw_reuse=1
3、批量设置多个参数:sudo sysctl -w net.core.rmem_max=16777216 net.core.wmem_max=16777216
这一步操作起来很简单,但切记——临时修改后若确认有效,必须补到 /etc/sysctl.d/ 下的持久化文件中,否则重启后参数还原,问题复现。
验证参数是否真正生效
第一步:检查 proc 值是否已变
sudo cat /proc/sys/net/ipv4/tcp_max_syn_backlog
第二步:确认该值来自哪个配置文件
sudo sysctl -a --no-pager | grep "tcp_max_syn_backlog" | head -n1
第三步:模拟真实负载压测(如用 wrk 发起短连接洪峰),观察 dmesg 是否还有 "TCP: drop open request" 或 "possible SYN flooding" 日志——这才是最终验证标准。
如果前两步都显示正确,但压测仍失败,说明应用层未同步调整(例如 Nginx listen 指令没配 backlog),此时需检查服务配置而非内核参数本身。











