银河麒麟v10永久修改内核限制需创建/etc/sysctl.d/99-kylin-limits.conf文件写入fs.file-max、net.core.somaxconn等参数,执行sudo sysctl --system加载,并配合/etc/security/limits.conf配置ulimit,最后通过proc值、sysctl -a和加载日志三重验证来源与生效状态。

银河麒麟V10系统在运行高并发服务、容器平台或实时业务时,常因默认内核限制过严导致连接拒绝、文件句柄耗尽、内存分配失败等问题,必须针对性修改各类内核限制参数才能保障稳定性和吞吐能力。
永久修改核心内核限制(推荐方式)
该方式通过独立配置文件实现持久化,避免被系统更新覆盖,且遵循麒麟OS V10 SP1+ 的标准加载优先级:【/etc/sysctl.d/*.conf > /etc/sysctl.conf > 内核默认值】。
第一步:创建专用配置文件并写入参数
执行命令:sudo tee /etc/sysctl.d/99-kylin-limits.conf,然后输入以下内容:
fs.file-max = 1048576
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
vm.swappiness = 10
kernel.panic = 10
kernel.dmesg.restrict = 0
第二步:立即加载全部配置
运行 sudo sysctl --system ——注意:不要用 sysctl -p,它只读取 /etc/sysctl.conf,会漏掉 /etc/sysctl.d/ 下的配置。
第三步:验证某项是否生效
例如检查文件句柄上限:sudo sysctl fs.file-max,输出应为 1048576。
临时调整特定参数(调试验证用)
适用于快速测试某参数效果,重启即失效,确认有效后务必补入 /etc/sysctl.d/ 目录。
方法一:单条设置sudo sysctl -w net.core.rmem_max=16777216
方法二:批量设置sudo sysctl -w net.ipv4.tcp_tw_reuse=1 vm.dirty_ratio=15
方法三:直接写 proc 接口(绕过 sysctl 层)sudo sh -c 'echo 65535 > /proc/sys/net/core/somaxconn'
这一步操作起来很简单,但若未同步写入配置文件,重启后参数还原,问题复现。
修改用户级资源限制(ulimit)
内核限制生效后,还需确保用户进程能实际使用这些上限,否则仍受 shell 级限制约束。
编辑 limits 配置:sudo vim /etc/security/limits.conf
在文件末尾追加:
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 65535
* hard nproc 65535
root soft nofile 1048576
root hard nofile 1048576
保存后,当前终端需退出重登录才生效;已运行的服务(如 nginx、java 进程)必须重启才能加载新限制。
验证参数真实来源与生效状态
仅看数值是否变更不够,必须确认该值来自你写的配置文件,而非其他位置覆盖。
① 查看 proc 值:cat /proc/sys/fs/file-max
② 查看该值来源:sudo sysctl -a --no-pager | grep "^fs\.file-max" | head -n1
输出中应含 /etc/sysctl.d/99-kylin-limits.conf 路径,而非 /etc/sysctl.conf 或 default。
③ 检查加载日志:sudo sysctl --system 2>&1 | grep "applying.*99-kylin-limits.conf"
若无此行,说明文件未被加载——常见原因是文件名不含 .conf 后缀或权限不为 644。











