国产Linux OS:网络性能调优关键内核参数
参数列表
这些参数是Linux系统中用于网络性能调优的关键内核参数,它们控制了网络接口和TCP协议栈的行为。合理调整这些参数可以根据具体的应用场景和网络条件优化系统的网络性能。
sysctl net.core.rmem_max
sysctl net.core.wmem_max
sysctl net.core.rmem_default
sysctl net.core.wmem_default
sysctl net.ipv4.tcp_mem
sysctl net.ipv4.tcp_rmem
sysctl net.ipv4.tcp_wmem
下面是对每个参数的具体解释及其作用:
1. net.core.rmem_max
和 net.core.wmem_max
net.core.rmem_max
: 这个参数定义了接收缓冲区的最大值(以字节为单位)。接收缓冲区用于存储从网络接收到的数据,直到应用程序处理这些数据。net.core.wmem_max
: 这个参数定义了发送缓冲区的最大值(以字节为单位)。发送缓冲区用于存储待发送的数据,直到这些数据被成功传输到目标主机。
作用: 调整这两个参数可以帮助优化高带宽或高延迟网络环境下的性能,通过允许更大的缓冲区来减少数据包丢失和提高吞吐量。
2. net.core.rmem_default
和 net.core.wmem_default
net.core.rmem_default
: 定义了接收缓冲区的默认大小(以字节为单位),这是在网络连接建立时分配给每个连接的初始缓冲区大小。net.core.wmem_default
: 定义了发送缓冲区的默认大小(以字节为单位),同样,这是在每个新连接建立时分配的初始发送缓冲区大小。
作用: 这些默认设置影响所有新创建的网络连接的性能。适当调整这些值可以改善网络应用的整体性能,特别是在高负载情况下。
3. net.ipv4.tcp_mem
这个参数是一个由三个数值组成的数组,分别表示:
- 当内存使用达到第一个数值时开始减少TCP内存使用;
- 当内存使用超过第二个数值时增加TCP内存使用;
- 强制回收内存的阈值。
作用: 控制TCP协议栈使用的内存量,帮助系统在内存压力下保持稳定性和性能。
4. net.ipv4.tcp_rmem
和 net.ipv4.tcp_wmem
net.ipv4.tcp_rmem
: 一个由三个数值组成的数组,分别表示最小、默认和最大TCP接收窗口大小(以字节为单位)。net.ipv4.tcp_wmem
: 类似地,也是一个由三个数值组成的数组,但针对的是发送窗口大小。
作用: TCP窗口大小直接影响数据传输的效率和速度。较大的窗口可以增加吞吐量,尤其是在高延迟网络中;然而,过大的窗口可能导致不必要的内存消耗和潜在的丢包风险。
总结
rmem_max
和wmem_max
:限制了网络接口的最大接收和发送缓冲区大小。rmem_default
和wmem_default
:设置了新连接的默认接收和发送缓冲区大小。tcp_mem
:管理TCP协议栈的内存使用,确保在不同内存压力条件下系统的稳定性。tcp_rmem
和tcp_wmem
:配置TCP连接的接收和发送窗口大小,直接影响数据传输效率。
国产Linux OS默认值
1. 麒麟V10
net.core.wmem_max = 212992
net.core.rmem_max = 212992
net.core.wmem_default = 212992
net.core.rmem_default = 212992
net.ipv4.tcp_mem = 31737 42318 63474
net.ipv4.tcp_rmem = 4096 131072 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
2. 龙蜥AnolisOS 8.9
net.core.rmem_max = 212992
net.core.wmem_max = 212992
net.core.rmem_default = 212992
net.core.wmem_default = 212992
net.ipv4.tcp_mem = 42432 56579 84864
net.ipv4.tcp_rmem = 4096 131072 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
3. openEuler22.03
net.core.rmem_max = 212992
net.core.wmem_max = 212992
net.core.rmem_default = 212992
net.core.wmem_default = 212992
net.ipv4.tcp_mem = 38916 51888 77832
net.ipv4.tcp_rmem = 4096 131072 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
国外主流Linux默认值
1. Ubuntu22.04
net.core.rmem_max = 212992
net.core.wmem_max = 212992
net.core.rmem_default = 212992
net.core.wmem_default = 212992
net.ipv4.tcp_mem = 92943 123924 185886
net.ipv4.tcp_rmem = 4096 131072 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
2. RHEL9.2/Rocky9.2
net.core.rmem_max = 212992
net.core.wmem_max = 212992
net.core.rmem_default = 212992
net.core.wmem_default = 212992
net.ipv4.tcp_mem = 41679 55575 83358
net.ipv4.tcp_rmem = 4096 131072 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
3. RHEL8.4/CentOS8.4
net.core.rmem_max = 212992
net.core.wmem_max = 212992
net.core.rmem_default = 212992
net.core.wmem_default = 212992
net.ipv4.tcp_mem = 42639 56855 85278
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
4. RHEL7.5/CentOS7.5
net.core.rmem_max = 212992
net.core.wmem_max = 212992
net.core.rmem_default = 212992
net.core.wmem_default = 212992
net.ipv4.tcp_mem = 88095 117463 176190
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
优化调整建议
调整内核参数以优化网络性能通常需要根据具体的应用场景和硬件条件进行。
以下是一些常见的建议,但请注意,这些值可能需要根据实际环境进一步调优:
-
高带宽需求(如大数据传输、视频流等):
- 提升读写缓冲区大小可以增加一次性传输的数据量。
net.core.rmem_max
和net.core.wmem_max
可以设置为更大值,比如 8MB 或更高。net.ipv4.tcp_rmem
和net.ipv4.tcp_wmem
的最大值也可以相应增大到 8MB 或更多。
-
低延迟需求(如在线游戏、实时数据处理等):
- 减少初始和最小的缓冲区大小有助于减少延迟。
net.ipv4.tcp_rmem
和net.ipv4.tcp_wmem
的第一个值(最小值)可以保持默认或适当减小。- 第二个值(初始大小)可以根据你的应用需求进行调整,通常不需要太大。
- 第三个值(最大值)可以根据你的网络带宽来设定。
-
高并发连接数(如Web服务器、API服务等):
- 增加
net.core.somaxconn
和net.ipv4.tcp_max_syn_backlog
的值,以便系统能处理更多的并发连接。 - 对于内存管理参数如
net.ipv4.tcp_mem
,确保其值足够大以避免在高负载下出现内存不足的问题。
- 增加
一个参考配置示例(请根据实际情况调整):
net.core.wmem_max = 16777216
net.core.rmem_max = 8388608
net.core.wmem_default = 16777216
net.core.rmem_default = 8388608
net.ipv4.tcp_mem = 1162629 1550174 2325258
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304
如何让参数生效
调整这些内核参数可以通过sysctl
命令来实现,并且为了确保这些设置在系统重启后仍然有效,需要将它们添加到系统的配置文件中。以下是具体步骤:
1. 使用 sysctl
命令临时调整
您可以使用 sysctl
命令即时修改内核参数。例如:
sudo sysctl -w net.core.rmem_max=4194304
sudo sysctl -w net.core.wmem_max=4194304
sudo sysctl -w net.core.rmem_default=262144
sudo sysctl -w net.core.wmem_default=262144
sudo sysctl -w net.ipv4.tcp_mem="31737 42318 63474"
sudo sysctl -w net.ipv4.tcp_rmem="4096 131072 4194304"
sudo sysctl -w net.ipv4.tcp_wmem="4096 16384 4194304"
2. 确保开机自动调整
为了确保这些设置在系统重启后依然生效,您需要将它们添加到 /etc/sysctl.conf
文件中.
-
打开
/etc/sysctl.conf
文件:sudo nano /etc/sysctl.conf
-
在文件末尾添加您的自定义设置:
# 自定义网络调优参数 net.core.rmem_max = 4194304 net.core.wmem_max = 4194304 net.core.rmem_default = 262144 net.core.wmem_default = 262144 net.ipv4.tcp_mem = 31737 42318 63474 net.ipv4.tcp_rmem = 4096 131072 4194304 net.ipv4.tcp_wmem = 4096 16384 4194304
-
保存并关闭文件。
-
应用新的设置(无需重启系统):
sudo sysctl -p
-
验证设置是否已正确应用:
sysctl net.core.rmem_max
sysctl net.core.wmem_max
sysctl net.core.rmem_default
sysctl net.core.wmem_default
sysctl net.ipv4.tcp_mem
sysctl net.ipv4.tcp_rmem
sysctl net.ipv4.tcp_wmem
这将显示当前的内核参数值,以确认它们已被正确设置。
欢迎点赞收藏关注评论!