Linux Minimal 调整内核参数的实用步骤
一、核心机制与位置
- 运行时查看与临时修改:通过 /proc/sys 虚拟文件系统查看参数,使用 sysctl -w 参数=值 临时生效;写入 /proc/sys/… 文件亦可(例如:echo 值 > /proc/sys/net/ipv4/tcp_fin_timeout)。此类修改在重启后会丢失。
- 永久生效:编辑 /etc/sysctl.conf(或 /etc/sysctl.d/*.conf),然后执行 sysctl -p 使配置加载。
- 常用查询:sysctl -a 查看全部;sysctl 参数名 查看单个值。
- 建议:最小化系统默认工具较少,必要时先安装 procps(提供 sysctl)与 iproute2(提供 ip、ss)。
二、标准流程与示例
- 步骤
- 备份当前值:sysctl -a > /root/sysctl-$(date +%F).bak
- 临时调优(验证用):sysctl -w net.ipv4.tcp_fin_timeout=30
- 永久写入:在 /etc/sysctl.conf 或 /etc/sysctl.d/99-tune.conf 追加参数
- 使配置生效:sysctl -p
- 验证:sysctl 参数名 或 cat /proc/sys/…
- 示例(网络与内存的基础优化)
# /etc/sysctl.d/99-tune.conf # 降低交换倾向(根据负载在 10–30 之间更常见) vm.swappiness = 10 # 基础网络防护与连接复用 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1800 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 3 # 监听队列与 SYN 队列 net.core.somaxconn = 1024 net.ipv4.tcp_max_syn_backlog = 2048 # 可选:如不使用 IPv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1应用:sysctl -p;验证:sysctl net.ipv4.tcp_fin_timeout、cat /proc/sys/net/ipv4/tcp_fin_timeout。
三、按场景给出可直接使用的参数
- System V IPC(数据库/中间件常见)
- 建议将 kernel.shmmax 设为接近物理内存大小(字节),kernel.shmall 按系统页大小计算(总页数≈内存/页大小),kernel.shmmni 与 kernel.msgmni 可按内存容量线性放大;kernel.sem 为四元组:SEMMSL、SEMMNS、SEMOPM、SEMMNI。
- 示例(以 16GB 内存为例,页大小常见为 4096 字节):
kernel.shmmni = 4096 kernel.shmmax = 17179869184 # 16GB kernel.shmall = 4194304 # 16GB/4KB kernel.sem = 250 1024000 32 4096 kernel.msgmni = 16384 kernel.msgmax = 65536 kernel.msgmnb = 65536应用:sysctl -p;如需持久化,写入 /etc/sysctl.conf 或 /etc/sysctl.d/。
- 网络吞吐与并发
- 增大套接字缓冲与自动调优、提升监听/半连接队列、缩短 keepalive 探测间隔:
net.core.rmem_max = 212992net.core.wmem_max = 212992net.ipv4.tcp_rmem = 4096 87380 6291456net.ipv4.tcp_wmem = 4096 16384 4194304net.ipv4.tcp_moderate_rcvbuf = 1net.core.somaxconn = 1024net.ipv4.tcp_max_syn_backlog = 2048net.core.netdev_max_backlog = 2000net.ipv4.tcp_keepalive_time = 1800net.ipv4.tcp_keepalive_intvl = 30net.ipv4.tcp_keepalive_probes = 3net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_fin_timeout = 30 - 说明:在 NAT/负载均衡 场景不建议开启 tcp_tw_recycle;需要时再评估。
- 增大套接字缓冲与自动调优、提升监听/半连接队列、缩短 keepalive 探测间隔:
- 内存与脏页回写(通用服务器)
vm.swappiness = 10vm.dirty_background_ratio = 5vm.dirty_ratio = 10vm.dirty_expire_centisecs = 3000vm.dirty_writeback_centisecs = 500提示:数值需结合业务与内存容量压测后微调。
四、验证、回滚与注意事项
- 验证
- 即时查看:sysctl 参数名;或 cat /proc/sys/…;网络可用 ss -s、ip -s link 观察连接与丢包。
- 共享内存/信号量/消息队列:ipcs -l(查看),ipcs -s/m/q(具体列表)。
- 回滚
- 临时改动直接重启即恢复;永久改动可:
- 使用备份文件覆盖 /etc/sysctl.conf 或 /etc/sysctl.d/*.conf;
- 执行 sysctl -p 重新加载;
- 针对单条参数:sysctl -w 参数=旧值。
- 临时改动直接重启即恢复;永久改动可:
- 注意事项
- 以 root 操作,变更前先备份;变更后观察系统日志与关键业务指标。
- 最小化系统可能缺少工具,必要时安装:yum/dnf install -y procps iproute2;Debian/Ubuntu:apt-get update && apt-get install -y procps iproute2。
- 某些参数在不同发行版/内核版本表现不同,生产环境请先在测试环境验证并逐步推广。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1486162.html