Linux 系统内核参数调优实战指南

今天分享一下sysctl.conf配置文件的调优。

1. 什么是 sysctl.conf?

sysctl.conf 是 Linux 系统中用于配置内核参数的文件,通常位于 /etc/sysctl.conf。这些参数控制着内核层面网络、内存、进程资源、安全策略等多个关键方面。

命令动态设置:

复制
sysctl -w 参数名=值1.

也可以写入 /etc/sysctl.conf 并用如下命令永久生效:

复制
sysctl -p1.
2. 网络性能调优

高并发服务、微服务网关或负载均衡器对 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.
6. 一键应用配置方法

查看当前内核参数:

复制
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