Linux 系统内核参数调优实战指南
今天分享一下sysctl.conf配置文件的调优。
sysctl.conf 是 Linux 系统中用于配置内核参数的文件,通常位于 /etc/sysctl.conf。这些参数控制着内核层面网络、内存、进程资源、安全策略等多个关键方面。
命令动态设置:
复制
sysctl -w 参数名=值1.
也可以写入 /etc/sysctl.conf 并用如下命令永久生效:
复制
sysctl -p1.
高并发服务、微服务网关或负载均衡器对 TCP/IP 栈有更高要求。以下参数可有效提升网络吞吐与连接性能:
复制
# 开启 IP 转发(容器/路由场景必备)
net.ipv4.ip_forward = 1
# 防止 SYN Flood 攻击
net.ipv4.tcp_syncookies = 1
# TIME_WAIT 优化:开启端口重用
net.ipv4.tcp_tw_reuse = 1
# TCP连接关闭延迟时间
net.ipv4.tcp_fin_timeout = 15
# 增加TCP队列长度,应对突发高连接数
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 8192
# Socket缓冲区优化
net.core.rmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_default = 262144
net.core.wmem_max = 167772161.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.
适用场景:
Nginx、HAProxy、Traefik 等网关 大量客户端短连接的微服务 TCP 粘连/连接池优化 3. 内存管理优化合理的内存策略对系统稳定性至关重要:
复制
# 控制交换空间使用倾向(建议调低)
vm.swappiness = 10
# 降低 dirty 页面回写延迟
vm.dirty_writeback_centisecs = 500
# 控制系统使用多少内存做缓存
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
# 限制进程申请超出物理内存的能力
vm.overcommit_memory = 1
vm.overcommit_ratio = 801.2.3.4.5.6.7.8.9.10.11.12.13.
适用场景:
Redis、MySQL、PostgreSQL 等对物理内存要求严格的服务 防止 OOM 杀手频繁触发 4. 文件句柄与并发连接限制Linux 默认最多只能打开 1024 个文件,对于高并发服务远远不够。
复制
fs.file-max = 20971521.
此外,修改用户级别限制:
编辑 /etc/security/limits.conf:
复制
* soft nofile 65535
* hard nofile 655351.2.
并在 /etc/pam.d/common-session 或 /etc/pam.d/login 添加:
复制
session required pam_limits.so1.
适用场景: 高并发 API 服务、反向代理、WebSocket 长连接系统
5. 安全性与稳定性设置强化内核层安全,防止被动攻击或意外干扰。
复制
# 禁止接受 ICMP 重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
# 禁止发送重定向包
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# 防止 IP 伪造攻击
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 禁止源路由包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 01.2.3.4.5.6.7.8.9.10.11.12.13.14.15.
查看当前内核参数:
复制
sysctl -a | grep tcp1.
立即生效配置:
复制
sysctl -p1.
推荐保存位置: 所有参数写入 /etc/sysctl.conf 或分模块写入 /etc/sysctl.d/99-custom.conf 更具维护性。
7. 推荐完整 sysctl.conf 模板这个是建议的配置,可以直接使用:
复制
# 文件句柄
fs.file-max = 2097152
# 网络优化
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 16384
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.ip_forward = 1
# 内存优化
vm.swappiness = 10
vm.overcommit_memory = 1
vm.overcommit_ratio = 80
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
vm.dirty_writeback_centisecs = 500
# 安全强化
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 01.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.
Linux 内核参数调优并非“设置越大越好”,而是基于业务场景、负载模型与服务类型的科学调整。
阅读剩余
THE END