Linux 进阶 L23:sysctl——内核参数调优
Linux 内核有上千个可调参数,sysctl 就是调它们的旋钮。不用重编内核,改个配置就生效。
基本用法
sysctl -a | head -5 # 看所有参数
sysctl net.ipv4.ip_forward # 看单个
实战:常用调优
# 开 IP 转发(当路由器/NAT 时)
sysctl -w net.ipv4.ip_forward=1
# 文件描述符上限(高并发服务)
sysctl -w fs.file-max=1000000
# TIME_WAIT 复用,缓解端口耗尽
sysctl -w net.ipv4.tcp_tw_reuse=1
# 增大连接队列
sysctl -w net.core.somaxconn=4096
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
# swappiness:0 尽量不用 swap,服务器一般设 10
sysctl -w vm.swappiness=10
永久生效
sysctl -w 重启就丢,写配置文件:
sudo vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
vm.swappiness = 10
net.core.somaxconn = 4096
sudo sysctl -p # 重载生效
注意事项
别乱抄网上的"优化大全",先搞懂每个参数
改之前记下原值
生产环境一次改一个,观察效果
远程改网络参数时留后路:
echo "sysctl -w net.ipv4.tcp_tw_reuse=0" | at now + 5 minutes
小结
真正的调优是"测出来的"——先看瓶颈在哪,对症下药。