sysctl 是 Linux 内核运行时参数管理工具,用于动态查看和修改 /proc/sys/ 下的内核参数,而无需重启系统。
对于 Linux 运维工程师、系统架构师、SRE、云平台工程师来说,掌握 sysctl 是系统性能优化、安全加固、高并发调优的核心技能之一。
一、sysctl 工作原理
Linux 内核参数实际存储在:
例如:
/proc/sys/net/ipv4/ip_forward
查看:
cat /proc/sys/net/ipv4/ip_forward
等价于:
sysctl net.ipv4.ip_forward
二、sysctl 常用命令
查看所有参数
输出:
kernel.hostname = node01vm.swappiness =60net.ipv4.ip_forward =0
查看单个参数
输出:
临时修改参数
sysctl -w vm.swappiness=10
或:
echo10 > /proc/sys/vm/swappiness
说明:
仅当前运行有效
重启失效
永久生效
编辑:
增加:
加载:
三、sysctl 参数分类
Linux 参数大致分为:
kernelvmfsnetuserdebugdev
四、kernel 参数详解
1 kernel.hostname
查看主机名
修改:
sysctl -w kernel.hostname=node01
2 kernel.pid_max
最大 PID
查看:
默认:
高并发服务器:
3 kernel.sysrq
Magic SysRq 开关
作用:
紧急故障处理
例如:
直接重启
4 kernel.panic
系统崩溃自动重启时间
表示:
五、VM(内存管理)参数
1 vm.swappiness
交换分区使用倾向
默认:
查看:
推荐:
设置:
2 vm.dirty_ratio
脏页比例
含义:
达到15%开始回写磁盘
3 vm.dirty_background_ratio
后台刷盘阈值
vm.dirty_background_ratio=5
4 vm.overcommit_memory
内存分配策略
启发式
允许超分配
严格限制
Redis推荐:
5 vm.min_free_kbytes
保留空闲内存
vm.min_free_kbytes=262144
避免内存耗尽
六、FS(文件系统)参数
1 fs.file-max
系统最大文件句柄
查看:
高并发建议:
2 fs.aio-max-nr
异步IO数量
Oracle/MySQL推荐提高
3 fs.inotify.max_user_watches
文件监控数
默认:
Kubernetes推荐:
七、网络参数(最重要)
1 IP转发
应用:
2 SYN Flood防御
net.ipv4.tcp_syncookies=1
启用:
防止SYN攻击
3 TIME_WAIT优化
net.ipv4.tcp_fin_timeout=30
默认:
4 TCP Keepalive
net.ipv4.tcp_keepalive_time=600
默认:
5 端口范围
net.ipv4.ip_local_port_range
查看:
高并发:
配置:
net.ipv4.ip_local_port_range=102465535
6 TCP最大连接队列
默认:
Nginx:
需要同步调整
7 SYN队列
net.ipv4.tcp_max_syn_backlog=65535
8 网络接收缓存
net.core.rmem_max=16777216
16MB
9 网络发送缓存
net.core.wmem_max=16777216
16MB
10 网络设备队列
net.core.netdev_max_backlog=65535
避免丢包
八、数据库服务器推荐参数
MySQL / PostgreSQL
fs.file-max=2097152vm.swappiness=1vm.dirty_ratio=15vm.dirty_background_ratio=5net.core.somaxconn=65535net.ipv4.tcp_max_syn_backlog=65535net.ipv4.tcp_fin_timeout=30net.core.rmem_max=16777216net.core.wmem_max=16777216
九、Redis 推荐参数
Redis 官方推荐:
vm.overcommit_memory=1vm.swappiness=1net.core.somaxconn=65535
验证:
redis-server --check-system
十、Kubernetes 推荐参数
net.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1fs.inotify.max_user_watches=524288fs.inotify.max_user_instances=8192
加载:
十一、安全加固推荐
禁止 ICMP Redirect
net.ipv4.conf.all.accept_redirects=0net.ipv4.conf.default.accept_redirects=0
禁止 Source Route
net.ipv4.conf.all.accept_source_route=0
开启反向路径过滤
net.ipv4.conf.all.rp_filter=1
禁止 IPv6(无需IPv6时)
net.ipv6.conf.all.disable_ipv6=1
十二、企业级 sysctl.conf 模板(RHEL9/RHEL10)
# Kernelkernel.pid_max =4194304kernel.sysrq =1kernel.panic =10# Memoryvm.swappiness =1vm.overcommit_memory =1vm.dirty_ratio =15vm.dirty_background_ratio =5# Filefs.file-max =2097152fs.aio-max-nr =1048576# Networknet.ipv4.ip_forward =1net.core.somaxconn =65535net.core.netdev_max_backlog =65535net.ipv4.tcp_max_syn_backlog =65535net.ipv4.tcp_fin_timeout =30net.core.rmem_max =16777216net.core.wmem_max =16777216net.ipv4.tcp_syncookies =1net.ipv4.ip_local_port_range =102465535
运维高频 sysctl 参数 Top 20
| | |
|---|
| | |
| | |
| | |
| | |
| net.ipv4.tcp_max_syn_backlog | |
| | |
| | |
| net.core.netdev_max_backlog | |
| | |
| net.ipv4.ip_local_port_range | |
| | |
| | |
| | |
| vm.dirty_background_ratio | |
| | |
| fs.inotify.max_user_watches | |
| | |
| | |
| net.ipv4.tcp_keepalive_time | |
| net.ipv4.conf.all.rp_filter | |
对于运维、SRE、系统架构师岗位,建议重点掌握 内存(vm)→ 网络(net)→ 文件系统(fs)→ 内核(kernel) 四大类参数,并结合 Nginx、HAProxy、MySQL、Redis、Kubernetes 等场景进行调优实践。这样在性能优化、故障排查和架构设计中才能真正发挥 sysctl 的价值。