- 文档首页
云服务器
云服务器ECS
最佳实践
镜像
Linux内核调优
在Linux操作系统中调整net.ipv4.tcp_mem参数
Linux内核调优
在Linux操作系统中调整net.ipv4.tcp_mem参数
在Linux操作系统中调整net.ipv4.tcp_mem参数
通过修改net.ipv4.tcp_mem参数的大小,可以设置TCP栈在处理网络数据时可用的内存量,从而控制系统在TCP网络连接中内存的分配和释放。
关于net.ipv4.tcp_mem参数
net.ipv4.tcp_mem是一个由3元整数组构成[min pressure max],这些值分别表示TCP协议栈在不同状态下的内存使用限制。这三个值定义了内存的阈值,单位为Page(内核页,通常1内核页大小为4KiB),含义如下:
- min: 内核开始回收内存的阈值。当系统的TCP内存使用量达到这个值时,内核将开始回收内存,以避免过度使用。
- pressure: 内核内存使用的软限制。超过这个值时,TCP会调节其内存消耗并进入内存压力模式;当内存消耗降到min以下时,TCP将退出内存压力模式。
- max: 内核内存使用的硬限制,即所有TCP套接字允许排队的最大页面数。超过这个值时,系统会拒绝分配Socket。
操作场景
- 在需要处理大量的并发HTTP请求且网络流量较高,如高负载Web服务器、流媒体服务器或大数据传输服务场景,服务器可能会遇到TCP连接处理瓶颈或内存使用过高的问题。此时,可以参考如下方案进行调整:
- min: 设置该参数为较高值,减少由于频繁的内存回收对高流量请求的影响。
- pressure: 设置该参数值为min参数值的4/3倍。
- max: 设置该参数值为pressure的2倍。
- 在执行较少的网络任务,如文件共享或基本的Web服务场景,服务器可能会由于内存回收阈值较高,出现不必要的内存占用。此时,可以参考如下方案进行调整:
- min: 设置该参数为较低的值,降低触发内存回收的阈值,避免不必要的内存占用。
- pressure: 设置该参数值为min参数值的4/3倍。
- max: 设置该参数值为pressure的2倍。
操作步骤
通过proc接口配置
通过net_tcp.conf文件配置
本方式可在操作系统运行过程中临时更改参数,每次重启实例后都需要重新配置。
- 在目标Linux实例中执行如下命令,查看net.ipv4.tcp_mem参数当前值。
cat /proc/sys/net/ipv4/tcp_mem
-
- 执行如下命令,配置net.ipv4.tcp_mem参数值。
echo "21198 28265 42396" > /proc/sys/net/ipv4/tcp_mem
本方式可在操作系统运行过程中永久修改参数值,重启实例后无需再次配置。
-
- 执行如下命令,新建net_tcp.conf文件。
vim /etc/sysctl.d/net_tcp.conf
net.ipv4.tcp_mem = 21198 28265 42396
- 按Esc键退出编辑模式,输入:wq按回车键,保存并退出文件。
sysctl -p /etc/sysctl.d/net_tcp.conf
最近更新时间:2025.02.28 11:35:58