Linux命令-sysctl运行时修改内核参数快速参考基本用法常用选项网络调优内存与虚拟内存调优文件系统调优安全加固持久化配置诊断与验证脚本常用 sysctl 速查sysctl是 Linux 系统中用于在运行时查看和修改内核参数的强大工具。它通过/proc/sys/虚拟文件系统直接与内核通信可以实时调整网络栈、虚拟内存、文件系统、安全策略等数百个内核参数。系统管理员通过sysctl进行性能调优和安全加固是运维工作的基本功。快速参考sysctl[选项][变量[值]]sysctl的临时修改在重启后失效。持久化配置需写入/etc/sysctl.conf或/etc/sysctl.d/*.conf。基本用法# 查看所有内核参数sysctl-a# 查看特定参数sysctlnet.ipv4.ip_forward# 查看一组参数前缀匹配sysctlnet.ipv4.tcp# 查看并显示简短描述sysctl-dvm.swappiness# 修改参数运行时重启失效sudosysctl-wnet.ipv4.ip_forward1# 从配置文件加载sudosysctl-p# 从指定文件加载sudosysctl-p/etc/sysctl.d/custom.conf# 显示所有参数仅名称无值sysctl-aN# 以 JSON 格式输出systemd-sysctlsysctl--jsonnet.ipv4.tcp_rmem常用选项选项说明-a显示所有参数-w VARVALUE写入参数值-p [FILE]从文件加载参数默认/etc/sysctl.conf-n仅显示值不显示参数名-N仅显示参数名-e忽略未知参数不报错-d显示参数描述-q静默模式--system加载所有系统配置目录的文件网络调优# IP 转发路由器必备 sudosysctl-wnet.ipv4.ip_forward1# TCP 缓冲区调优 # 查看当前缓冲区设置sysctlnet.ipv4.tcp_rmem# 读缓冲: min default maxsysctlnet.ipv4.tcp_wmem# 写缓冲: min default max# 优化高带宽延迟网络sudosysctl-wnet.ipv4.tcp_rmem4096 87380 16777216sudosysctl-wnet.ipv4.tcp_wmem4096 65536 16777216# TCP KeepAlive sudosysctl-wnet.ipv4.tcp_keepalive_time300sudosysctl-wnet.ipv4.tcp_keepalive_intvl30sudosysctl-wnet.ipv4.tcp_keepalive_probes5# 连接队列大小 sudosysctl-wnet.core.somaxconn1024sudosysctl-wnet.ipv4.tcp_max_syn_backlog8192# TIME-WAIT 优化高并发服务器 sudosysctl-wnet.ipv4.tcp_tw_reuse1sudosysctl-wnet.ipv4.tcp_fin_timeout30# 启用 TCP Fast Open sudosysctl-wnet.ipv4.tcp_fastopen3# 客户端服务端# BBR 拥塞控制算法 sudosysctl-wnet.core.default_qdiscfqsudosysctl-wnet.ipv4.tcp_congestion_controlbbr# 端口范围扩展 sudosysctl-wnet.ipv4.ip_local_port_range1024 65535内存与虚拟内存调优# 交换倾向swappiness # 值越小越倾向使用物理内存sudosysctl-wvm.swappiness10# 脏页写回 sudosysctl-wvm.dirty_ratio10# 脏页比率上限sudosysctl-wvm.dirty_background_ratio5# 后台写回阈值sudosysctl-wvm.dirty_expire_centisecs1500# 脏页过期时间15秒# 过度提交内存策略 sysctlvm.overcommit_memory# 0启发式 1总是允许 2拒绝sysctlvm.overcommit_ratio# overcommit_memory2时的百分比# OOM 相关 sudosysctl-wvm.panic_on_oom0# OOM 时是否触发内核 panicsudosysctl-wvm.oom_kill_allocating_task0# 大页内存 sysctlvm.nr_hugepages# 当前大页数量sudosysctl-wvm.nr_hugepages1024# 文件缓存回收 sudosysctl-wvm.vfs_cache_pressure50# 100减少回收文件系统调优# 文件句柄限制 sysctlfs.file-max# 查看最大文件句柄sudosysctl-wfs.file-max655360sysctlfs.file-nr# 查看当前使用情况# 输出已分配 未使用 最大值# inode 相关 sysctlfs.inode-nrsudosysctl-wfs.inode-max524288# aio异步 IO sudosysctl-wfs.aio-max-nr1048576# 核心转储 sudosysctl-wkernel.core_pattern/var/coredumps/core.%e.%p# 管道缓冲区 sudosysctl-wfs.pipe-max-size1048576安全加固# 网络安全 # 禁用 IP 源路由防 IP 欺骗sudosysctl-wnet.ipv4.conf.all.accept_source_route0# 启用反向路径过滤sudosysctl-wnet.ipv4.conf.all.rp_filter1# 忽略 ICMP 重定向sudosysctl-wnet.ipv4.conf.all.accept_redirects0sudosysctl-wnet.ipv4.conf.all.send_redirects0# 忽略广播 pingsudosysctl-wnet.ipv4.icmp_echo_ignore_broadcasts1# 启用 TCP SYN Cookie防 SYN Floodsudosysctl-wnet.ipv4.tcp_syncookies1# 日志记录 Martian 包不可路由的源地址sudosysctl-wnet.ipv4.conf.all.log_martians1# 内核安全 # 限制内核指针泄露防内核地址泄露sudosysctl-wkernel.kptr_restrict2# 限制 dmesg 访问sudosysctl-wkernel.dmesg_restrict1# 禁用 kexecsudosysctl-wkernel.kexec_load_disabled1# ASLR 地址空间随机化sudosysctl-wkernel.randomize_va_space2# 限制 ptrace 作用域sudosysctl-wkernel.yama.ptrace_scope1持久化配置# 主配置文件sudovim/etc/sysctl.conf# 分模块配置推荐sudomkdir-p/etc/sysctl.d# 网络优化cat/etc/sysctl.d/60-network-tuning.confEOF # TCP 缓冲区优化 net.core.rmem_max 16777216 net.core.wmem_max 16777216 net.ipv4.tcp_rmem 4096 87380 16777216 net.ipv4.tcp_wmem 4096 65536 16777216 # BBR 拥塞控制 net.core.default_qdisc fq net.ipv4.tcp_congestion_control bbr # 高并发优化 net.core.somaxconn 1024 net.ipv4.tcp_max_syn_backlog 8192 net.ipv4.tcp_tw_reuse 1 EOF# 安全加固cat/etc/sysctl.d/70-security-hardening.confEOF # IP 转发仅在需要时启用 # net.ipv4.ip_forward 1 # 网络安全 net.ipv4.conf.all.accept_source_route 0 net.ipv4.conf.all.accept_redirects 0 net.ipv4.conf.all.rp_filter 1 net.ipv4.tcp_syncookies 1 net.ipv4.icmp_echo_ignore_broadcasts 1 # 内核安全 kernel.kptr_restrict 2 kernel.dmesg_restrict 1 kernel.randomize_va_space 2 EOF# 内存管理cat/etc/sysctl.d/80-memory-tuning.confEOF vm.swappiness 10 vm.vfs_cache_pressure 50 vm.dirty_ratio 10 vm.dirty_background_ratio 5 EOF# 加载所有配置sudosysctl--system# 或逐个加载sudosysctl-p/etc/sysctl.d/60-network-tuning.confsudosysctl-p/etc/sysctl.d/70-security-hardening.confsudosysctl-p/etc/sysctl.d/80-memory-tuning.conf诊断与验证脚本# 验证已加载的参数cat/usr/local/bin/sysctl_verify.shEOF #!/bin/bash echo 关键内核参数状态 check_param() { local param$1 expected$2 local actual$(sysctl -n $param 2/dev/null) if [ $actual $expected ]; then echo ✅ $param $actual else echo ❌ $param $actual (期望: $expected) fi } check_param net.ipv4.ip_forward 1 check_param net.ipv4.tcp_syncookies 1 check_param kernel.randomize_va_space 2 check_param kernel.kptr_restrict 2 check_param vm.swappiness 10 echo echo 网络关键参数 sysctl net.ipv4.tcp_congestion_control sysctl net.core.somaxconn sysctl net.ipv4.tcp_fastopen echo echo 内存关键参数 sysctl vm.dirty_ratio sysctl vm.vfs_cache_pressure EOFchmodx /usr/local/bin/sysctl_verify.sh# 批量比较两台服务器的参数差异# 服务器 Asshserver_asysctl -a/tmp/sysctl_a.txt# 服务器 Bsshserver_bsysctl -a/tmp/sysctl_b.txt# 对比diff(sort/tmp/sysctl_a.txt)(sort/tmp/sysctl_b.txt)|head-30# 导出当前参数作为备份sysctl-a/tmp/sysctl_backup_$(date%Y%m%d).txt# 恢复谨慎# sudo sysctl -p /tmp/sysctl_backup_20240115.txt常用 sysctl 速查参数推荐值用途net.ipv4.ip_forward1 (路由) / 0 (主机)IP 转发net.ipv4.tcp_syncookies1防 SYN Floodvm.swappiness10减少交换倾向net.core.somaxconn1024-4096监听队列长度kernel.randomize_va_space2ASLRkernel.kptr_restrict2内核指针保护net.ipv4.tcp_tw_reuse1TIME-WAIT 复用net.ipv4.tcp_congestion_controlbbr拥塞控制算法fs.file-max根据需求最大文件句柄vm.dirty_ratio10脏页上限调优原则先测量后调整——不要盲目应用网上的优化秘籍在生产环境中先在测试环境验证参数效果使用sysctl.d分模块管理配置便于维护和版本控制记录每次修改的日期和原因方便回溯某些参数修改可能立即影响线上服务如网络参数需在维护窗口执行