内核参数调优模板

在ubuntu22.04 下,sysctl -a 能输出接近 1000 个内核参数,大部分是内核模块或子系统内部使用的,很少直接调优。

真正经常用到调优相关的,大概集中在以下几个模块:

1. 网络相关(最常调优的部分)

在高并发服务、网关、负载均衡器上经常要优化。

  • 连接追踪 / TIME_WAIT / 端口复用

    • net.ipv4.ip_local_port_range → 本地端口范围

    • net.ipv4.tcp_tw_reuse → 是否允许 TIME_WAIT 套接字复用

    • net.ipv4.tcp_tw_recycle(已废弃,22.04 不用了)

    • net.ipv4.tcp_fin_timeout → FIN-WAIT-2 超时时间

  • 队列与 backlog

    • net.core.somaxconn → listen backlog 上限

    • net.ipv4.tcp_max_syn_backlog → 半连接队列长度

    • net.core.netdev_max_backlog → 网络层接收队列大小

  • 内存与缓冲

    • net.core.rmem_default / net.core.rmem_max → 接收缓冲区

    • net.core.wmem_default / net.core.wmem_max → 发送缓冲区

    • net.ipv4.tcp_rmem / net.ipv4.tcp_wmem → TCP 自动调节窗口

  • 内核 TCP 行为

    • net.ipv4.tcp_syncookies → SYN Flood 防御

    • net.ipv4.tcp_keepalive_time → TCP keepalive 时间

    • net.ipv4.tcp_keepalive_intvl / net.ipv4.tcp_keepalive_probes → 探测间隔与次数

  • 路由与转发

    • net.ipv4.ip_forward → 是否允许转发

    • net.ipv4.conf.all.rp_filter → 反向路径过滤(安全相关)

    • net.ipv4.conf.all.accept_redirects / send_redirects → 是否接受/发送路由重定向

2. 文件句柄 / 内存 / 进程相关

服务并发量大时需要调优。

  • 文件描述符限制

    • fs.file-max → 系统最大文件描述符数量

    • fs.nr_open → 单进程最大打开文件数

  • 内存管理

    • vm.swappiness → swap 倾向(常调低如 10)

    • vm.dirty_ratio / vm.dirty_background_ratio → 脏页写回策略

    • vm.max_map_count → 进程可 mmap 的最大内存区域数(Elasticsearch 等需要调高)

  • OOM 相关

    • /proc/sys/vm/overcommit_memory → 内存分配策略

    • vm.overcommit_ratio → overcommit 的比例

3. 内核安全相关

生产环境常常要求加固。

  • kernel.randomize_va_space → 地址空间随机化(ASLR)

  • kernel.sysrq → SysRq 功能(建议生产禁用:0)

  • kernel.dmesg_restrict → 限制非 root 读取 dmesg

  • fs.suid_dumpable → 控制 suid 程序 coredump 行为

4. 调试 / 日志相关

  • kernel.printk → 控制内核日志级别输出

  • kernel.core_pattern → core dump 文件路径和命名规则

分类常见参数应用场景
网络连接 tcp_tw_reuse, ip_local_port_range, tcp_fin_timeout 高并发连接优化
队列/缓冲 somaxconn, tcp_max_syn_backlog, netdev_max_backlog 负载均衡 / Web 服务器
TCP 行为 tcp_keepalive_*, tcp_syncookies 长连接 / 防御攻击
路由转发 ip_forward, rp_filter, accept_redirects 网关 / 路由器
文件句柄 fs.file-max, fs.nr_open 高并发 I/O 服务
内存管理 vm.swappiness, vm.dirty_ratio, vm.max_map_count 数据库 / ES 调优
安全 randomize_va_space, sysrq, dmesg_restrict 服务器安全加固
日志/调试 printk, core_pattern 内核日志与故障分析

5. 内核调优模板及参数说明

########################################
# 文件: /etc/sysctl.d/99-custom.conf
# 说明: 常用 Linux 内核参数优化(通用 Web/DB/微服务场景)
########################################

## =========================
## 1. 网络连接与端口复用
## =========================
net.ipv4.ip_local_port_range = 1024 65535    # 本地可用端口范围
net.ipv4.tcp_fin_timeout = 15                # TCP 连接关闭等待时间 (默认60)
net.ipv4.tcp_tw_reuse = 1                    # 允许 TIME_WAIT 套接字复用
net.ipv4.tcp_max_tw_buckets = 5000           # 系统可同时保持的 TIME_WAIT 数

## =========================
## 2. 队列与 backlog
## =========================
net.core.somaxconn = 65535                   # Listen backlog 上限 (默认128)
net.ipv4.tcp_max_syn_backlog = 8192          # 半连接队列长度
net.core.netdev_max_backlog = 65535          # 内核接收队列长度

## =========================
## 3. TCP keepalive 相关
## =========================
net.ipv4.tcp_keepalive_time = 600            # TCP 保活探测时间 (秒)
net.ipv4.tcp_keepalive_intvl = 30            # 探测间隔 (秒)
net.ipv4.tcp_keepalive_probes = 5            # 探测次数

## =========================
## 4. 内存管理
## =========================
vm.swappiness = 10                           # 尽量少用 swap (默认60)
vm.dirty_ratio = 20                          # 最大脏页比例 (默认30)
vm.dirty_background_ratio = 5                # 后台写回脏页比例 (默认10)
vm.max_map_count = 262144                    # 进程可 mmap 区域数 (ES/DB 常调高)

## =========================
## 5. 文件句柄限制
## =========================
fs.file-max = 2097152                        # 系统级最大文件句柄数
fs.nr_open = 2097152                         # 单进程最大文件句柄数

## =========================
## 6. 网络安全 & 路由
## =========================
net.ipv4.ip_forward = 0                      # 是否允许转发 (网关开启:1, 普通服务器:0)
net.ipv4.conf.all.rp_filter = 1              # 反向路径过滤
net.ipv4.conf.all.accept_redirects = 0       # 禁止 ICMP 重定向 (防止劫持)
net.ipv4.conf.all.send_redirects = 0         # 禁止发送 ICMP 重定向

## =========================
## 7. 内核安全相关
## =========================
kernel.randomize_va_space = 2                # 开启地址空间随机化 (ASLR)
kernel.sysrq = 0                             # 关闭 Magic SysRq (防止误操作)
kernel.dmesg_restrict = 1                    # 限制非 root 读取内核日志
fs.suid_dumpable = 0                         # 禁止 suid 程序生成 core dump

## =========================
## 8. 调试 / 日志
## =========================
kernel.printk = 3 4 1 3                      # 控制台日志级别
kernel.core_pattern = /var/core/core-%e-%p-%t # core dump 文件路径和格式

 

posted @ 2025-09-09 15:36  羊脂玉净瓶  阅读(27)  评论(0)    收藏  举报