Linux 内核参数调优是提升系统性能的重要手段,通过调整 /etc/sysctl.conf 文件可以优化系统行为。
网络参数调优:
- TCP 连接参数:
- net.ipv4.tcp_tw_reuse=1:允许将 TIME-WAIT sockets 重新用于新的 TCP 连接
- net.ipv4.tcp_tw_recycle=0:关闭 TCP 连接快速回收(可能导致 NAT 问题)
- net.ipv4.tcp_fin_timeout=30:减少 FIN-WAIT-2 状态的超时时间
- net.ipv4.tcp_keepalive_time=600:TCP keepalive 探测时间
- net.ipv4.tcp_keepalive_probes=3:TCP keepalive 探测次数
- net.ipv4.tcp_keepalive_intvl=15:TCP keepalive 探测间隔
- TCP 缓冲区参数:
- net.ipv4.tcp_rmem="4096 87380 16777216":TCP 接收缓冲区大小
- net.ipv4.tcp_wmem="4096 65536 16777216":TCP 发送缓冲区大小
- net.core.rmem_max=16777216:最大接收缓冲区
- net.core.wmem_max=16777216:最大发送缓冲区
- TCP 连接队列:
- net.core.somaxconn=65535:最大监听队列长度
- net.ipv4.tcp_max_syn_backlog=8192:最大 SYN 队列长度
- net.ipv4.tcp_syncookies=1:启用 SYN cookies 防止 SYN 攻击
- 其他网络参数:
- net.ipv4.ip_local_port_range="1024 65535":本地端口范围
- net.ipv4.tcp_max_tw_buckets=5000:TIME-WAIT bucket 数量
- net.ipv4.tcp_fastopen=3:启用 TCP Fast Open
内存参数调优:
- 虚拟内存:
- vm.swappiness=10:降低使用 swap 的倾向(0-100)
- vm.vfs_cache_pressure=100:调整内核回收内存的倾向
- vm.dirty_ratio=10:脏页占内存的比例
- vm.dirty_background_ratio=5:后台写入脏页的比例
- vm.dirty_expire_centisecs=3000:脏页过期时间
- 内存分配:
- vm.overcommit_memory=1:允许过度分配内存
- vm.overcommit_ratio=50:过度分配比例
- Huge Pages:
- vm.nr_hugepages=0:大页数量
- vm.hugetlb_shm_group=0:允许使用大页的组 ID
文件系统参数调优:
- 文件句柄:
- fs.file-max=65535:系统最大打开文件数
- fs.inotify.max_user_watches=524288:inotify 监控数量
- 文件系统:
- fs.aio-max-nr=1048576:最大异步 I/O 数量
- fs.nr_open=1048576:进程最大打开文件数
进程和线程参数调优:
- 进程限制:
- kernel.pid_max=4194303:最大进程 ID
- kernel.threads-max=4194303:最大线程数
- 信号量:
- kernel.sem="250 32000 100 128":信号量参数
- kernel.shmmax=68719476736:最大共享内存段大小
- kernel.shmall=4294967296:共享内存页数
安全参数调优:
- 网络安全:
- net.ipv4.conf.all.rp_filter=1:启用反向路径过滤
- net.ipv4.conf.default.rp_filter=1:默认启用反向路径过滤
- net.ipv4.icmp_echo_ignore_all=0:允许 ICMP echo 请求
- net.ipv4.icmp_echo_ignore_broadcasts=1:忽略广播 ICMP
- net.ipv4.conf.all.accept_source_route=0:拒绝源路由
- net.ipv4.conf.default.accept_source_route=0:默认拒绝源路由
- 内核安全:
- kernel.dmesg_restrict=1:限制 dmesg 访问
- kernel.kptr_restrict=1:限制内核指针访问
- kernel.perf_event_paranoid=2:限制性能事件访问
性能监控参数:
- 系统监控:
- kernel.sysrq=0:禁用 SysRq 键
- kernel.randomize_va_space=2:地址空间随机化
- 日志参数:
- kernel.printk="4 4 1 7":控制台日志级别
参数应用方法:
- 临时修改:sysctl -w parameter=value
- 永久修改:编辑 /etc/sysctl.conf 文件
- 应用配置:sysctl -p 或 sysctl --system
- 查看当前值:sysctl parameter
- 查看所有参数:sysctl -a
调优建议:
- 根据实际应用场景调整参数
- 修改前备份原配置
- 逐步调整,观察效果
- 使用性能监控工具验证调优效果
- 参考官方文档和最佳实践
- 生产环境调优前先在测试环境验证
常见应用场景:
- Web 服务器:增加连接队列、调整 TCP 参数
- 数据库服务器:优化内存参数、增加文件句柄
- 高并发服务:增加端口范围、优化 TCP 缓冲区
- 虚拟化环境:调整内存参数、启用 Huge Pages