首页/系统/Linux 运维命令速查/常见内核参数速查(性能相关)
性能与监控48 条

常见内核参数速查(性能相关)

少量关键 sysctl 解释:swappiness、oom_score_adj、tcp 缓冲区与连接队列;改前改后都可查可回滚。

Linux 运维命令速查系统更新于 2026-10-13

内核参数速查是什么

sysctl 读写的是 /proc/sys 下的内核运行时参数,读用 sysctl 名称,写用 sysctl -w 或直接 echo 到对应文件。这里只覆盖少量与性能强相关、且改了确实有意义的参数;其余参数保持默认通常更安全。核心原则是:一次只改一项,改前记录当前值与改的理由,改后能回滚。

基本信息

适用平台Linux(所有发行版,procfs 为接口)
查看sysctl 名称 / cat /proc/sys/路径
临时修改sysctl -w 名称=值(重启失效)
持久化写 /etc/sysctl.d/99-xxx.conf 后执行 sysctl --system(或 sysctl -p 指定文件)
生效范围net.* 多为网络命名空间内生效,容器与宿主机互不影响

典型使用场景

  • 内存换页行为调优:按业务内存模型调整 swappiness
  • 高并发连接服务:提高 somaxconn 与 SYN 队列,与应用的 backlog 配套
  • 单机大量连接:扩大本地端口范围,避免 TIME-WAIT 堆积导致端口不足
  • 大数据与搜索类应用:提高 max_map_count,避免 mmap 数量超限报错
  • 排查「改了不生效」:确认是命名空间内生效还是需要重启服务

常用示例

常用示例
sysctl vm.swappiness                                  # 查看当前值
sysctl -w vm.swappiness=10                            # 临时调整
sysctl net.core.somaxconn net.ipv4.tcp_max_syn_backlog  # 一次查多个
cat /proc/sys/net/ipv4/ip_local_port_range             # 本地端口范围
sysctl --system                                       # 重载全部配置片段
sysctl -p /etc/sysctl.d/99-perf.conf                  # 只重载某个文件

持久化配置

持久化配置
# /etc/sysctl.d/99-perf.conf
vm.swappiness = 10                 # 降低换页倾向,数据库类服务常用
net.core.somaxconn = 4096          # 全连接队列上限,需与应用 backlog 配套
net.ipv4.tcp_max_syn_backlog = 4096  # 半连接队列上限
net.ipv4.ip_local_port_range = 10240 65000   # 客户端可用端口范围
fs.file-max = 2097152              # 系统级文件句柄上限

常用参数与调整要点

参数含义调整要点
vm.swappiness内核换页到 swap 的倾向数据库通常调低;调 0 不代表完全禁用换页
vm.overcommit_memory内存分配策略Redis 等场景有明确建议值,改动要按官方文档
net.core.somaxconn已完成握手的等待队列上限要同时调大应用的 backlog,否则单侧无效
net.ipv4.tcp_max_syn_backlog半连接队列上限配合 SYN 洪水防护与 somaxconn 一起看
fs.file-max系统级文件句柄上限还要配合 limits.conf 或 unit 的 LimitNOFILE
vm.max_map_count单进程 mmap 区域数上限搜索引擎与大数据组件常见必调项
参数不是越多越好:somaxconn 要与应用侧 backlog 配套,swappiness 与业务内存模型相关,缓冲区类参数改大还可能带来内存放大。每次只改一项、记录改前值、观察足够长的时间再评估。
持久化优先写在 /etc/sysctl.d/ 下新增文件,而不是改 /etc/sysctl.conf:发行版自带的默认文件在包升级时可能被覆盖,独立文件更清晰也更容易回滚。写完必须 sysctl --system 或 sysctl -p 才生效,重启不验证等于没落地。

易错点

  • 新内核与新版发行版已经调优了部分默认值(如 somaxconn),照抄老教程反而可能把值改小
  • 改 tcp 缓冲与内存类参数要警惕内存放大:高并发大缓冲在小内存机器上会直接触发 OOM
  • 只改了配置文件却没有 sysctl -p 或 sysctl --system,重启前一直没生效
  • 容器里的 net.* 参数属于容器网络命名空间,改宿主机不影响已运行的容器,反之亦然
  • 把 swappiness 设为 0 并不等于禁止换页,极端内存压力下内核仍会回收匿名页

数据来源与参考

  • man 8 sysctl
  • 内核文档 admin-guide/sysctl(vm/net)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌