❝一份系统化、可直接落地的 Linux 内核优化方案,适用于高并发 Web、网关、数据库、缓存等服务器。 所有参数均附带说明+作用+注意事项,运维/开发都能看懂。
⚠️ 重要提醒(必看)
一、配置生效方法
临时生效(重启失效)
sysctl -w 参数名=值
永久生效(推荐)
# 创建自定义配置
vim /etc/sysctl.conf
# 加载生效
sysctl -p /etc/sysctl.conf
二、完整优化配置(带详细注释)
# ==================================================
# 网络性能优化(高并发服务器必备)
# ==================================================
# 监听端口最大连接队列,应对高并发
net.core.somaxconn = 2048
# 网卡数据包队列长度,高流量场景增大
net.core.netdev_max_backlog = 4096
# TCP半连接队列最大值,防SYN洪水、提升并发
net.ipv4.tcp_max_syn_backlog = 2048
# 开启SYN Cookie,防御SYN Flood攻击
net.ipv4.tcp_syncookies = 1
# 缩短FIN_WAIT2时间,加快连接回收
net.ipv4.tcp_fin_timeout = 30
# 允许TIME-WAIT套接字重用,高并发非常重要
net.ipv4.tcp_tw_reuse = 1
# 已废弃,NAT环境会出问题,必须关闭
net.ipv4.tcp_tw_recycle = 0
# 扩大本地端口范围,避免大量外连时端口耗尽
net.ipv4.ip_local_port_range = 1024 65000
# TCP保活:更快发现并清理死连接
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5
# 最大Socket读写缓冲区(16MB)
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# TCP读写缓冲区:最小、默认、最大
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
# 使用BBR拥塞控制,低延迟、高吞吐(内核≥4.9)
net.ipv4.tcp_congestion_control = bbr
# ==================================================
# 内存与Swap优化(数据库/Redis/缓存优先)
# ==================================================
# 降低使用swap的倾向,0尽量不用,10更稳妥
vm.swappiness = 10
# 触发进程同步刷盘的脏页比例,降低避免I/O尖刺
vm.dirty_ratio = 10
# 触发后台异步刷盘的脏页比例,平滑写入
vm.dirty_background_ratio = 5
# Redis专用:允许内存超分配,需要再开启
# vm.overcommit_memory = 1
# ==================================================
# 文件系统优化(高并发连接、文件读写必备)
# ==================================================
# 系统最大打开文件句柄数
fs.file-max = 1000000
# 增大inotify监控上限,Node/IDE/热重载用
fs.inotify.max_user_watches = 524288
# ==================================================
# 内核通用配置
# ==================================================
# 系统最大PID号,防止大量进程耗尽PID
kernel.pid_max = 4194303
三、验证与监控
# 使配置生效
sysctl -p
# 查看某个参数当前值
sysctl 参数名
# 常用监控工具
# 网络:ss -antlp、netstat -s、sar -n DEV、iftop
# 内存:free -h、vmstat 1
# 磁盘I/O:iostat -xz 1、iotop
# 系统整体:htop、dstat