---
title: 配置内核参数
description: "配置内核参数，包括TCP/IP协议栈、透明大页等相关参数，提升性能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/Redis/kunpengredishdp_05_0017.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/Redis/kunpengredishdp_05_0017.html
indexId: db5ca6a5010d242ae22e8f804aa21346b7b745e60e4bf79873f68baa33e76de772
---
# 配置内核参数

#### 目的

配置内核参数，包括TCP/IP协议栈、透明大页等相关参数，提升性能。


#### 方法

配置OS内核参数。OS内核参数说明见表1。```
sysctl -w net.core.netdev_budget=600
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.somaxconn=2048
sysctl -w net.core.optmem_max=40960
sysctl -w net.core.rmem_default=65535
sysctl -w net.core.wmem_default=65535
sysctl -w net.core.wmem_max=8388608
sysctl -w net.ipv4.tcp_rmem="16384 349520 16777216"
sysctl -w net.ipv4.tcp_wmem="16384 349520 16777216"
sysctl -w net.ipv4.tcp_mem="8388608 8388608 8388608"
sysctl -w vm.overcommit_memory=1
echo never > /sys/kernel/mm/transparent_hugepage/enabled
```

使用 sysctl -w命令只能临时修改内核参数。如需永久修改内核参数，请在/etc/sysctl.conf 文件中增加以上配置选项，格式为key = value，例如net.core.netdev_budget=600，在文件中保存修改后，执行sysctl -p加载新的内核配置。


**表1 OS内核参数说明**

| 参数 | 说明 | 取值 |
| --- | --- | --- |
| net.core.netdev\_budget | 控制每次NAPI轮询循环从单个网卡队列中处理的数据包数量，确保不超过最大限制。 | 在高速网络（尤其是10GbE+）或突发流量巨大的场景下，建议取值600。 |
| net.core.rmem\_max | 设置单个Socket接收缓冲区的最大字节数。 | 对于高带宽、高延迟（如广域网）或高吞吐量的连接，建议取值16777216/16MB。 |
| net.core.somaxconn | 设置系统中每个监听端口（Listen Socket）的未完成连接队列（SYN Queue）和已建立连接队列（Accept Queue）的最大长度总和的上限。应用层调用listen()时设置的backlog参数不能超过此值。 | 对于高并发连接请求的服务，建议取值2048。 |
| net.core.optmem\_max | 设置单个Socket可分配用于辅助数据（Ancillary Data）和控制信息（如sendmsg/recvmsg使用的控制消息）的最大内存字节数。 | 对于使用大量socket选项或复杂控制消息的应用，建议取值40960/40KB。 |
| net.core.rmem\_default | 设置新创建Socket的接收缓冲区的默认初始大小（字节）。 | 对于高带宽、高延迟（如广域网）或高吞吐量的连接，建议取值65535/64KB。 |
| net.core.wmem\_default | 设置新创建Socket的发送缓冲区的默认初始大小（字节）。 | 同rmem\_default，建议取值65535/64KB。 |
| net.core.wmem\_max | 设置单个Socket发送缓冲区的最大字节数。 | 对于需要持续高速发送大量数据的应用，建议取值8388608/8MB。 |
| net.ipv4.tcp\_rmem | 为TCP Socket的接收缓冲区设置三个值：min default max。 | 对于高带宽高延迟网络（BDP大）的应用，建议取值"16384 349520 16777216"。 |
| net.ipv4.tcp\_wmem | 为TCP Socket的发送缓冲区设置三个值：min default max（含义同 tcp\_rmem）。 | 允许内核缓存更多应用层写入的待发送数据，建议取值"16384 349520 16777216"。 |
| net.ipv4.tcp\_mem | 控制TCP协议栈全局可使用的总内存页数（通常1页=4KB）。设置三个值：low pressure high。 | 避免TCP在缓冲区增长到很大时（特别是在高并发或BDP大的连接上）被过早地限制，建议取值"8388608 8388608 8388608"。 |
| vm.overcommit\_memory | 控制内核的内存过量提交策略。 | 在高性能服务器场景下，特别是使用大量内存的应用，防止内存分配失败，建议取值1。 |
| transparent\_hugepage | 通过自动将多个常规内存页合并成大页，减少CPU的页表项数量，从而降低TLB缓存未命中率，提升内存访问效率。 | 在数据库和低延迟场景中，为了消除由透明大页引发的性能抖动问题，取值never。 |
