磐维数据库部署之内核参数优化

2024年 7月 22日 100.6k 0

中国移动磐维数据库(ChinaMobileDB),简称“磐维数据库”(CMDB)。是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。
其产品内核能力基于华为 OpenGauss 开源软件,并进一步提升了系统稳定性。

本文将介绍磐维数据库部署之间要进行的内核参数优化,介绍相关参数的作用。

vi /etc/sysctl.conf

# panweidb
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_retries1 = 5
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_retries2 = 12
vm.overcommit_memory = 0
net.ipv4.tcp_rmem = 8192 250000 16777216
net.ipv4.tcp_wmem = 8192 250000 16777216
net.core.wmem_max = 21299200
net.core.rmem_max = 21299200
net.core.wmem_default = 21299200
net.core.rmem_default = 21299200
net.ipv4.ip_local_port_range = 26000 65535
kernel.sem = 250 6400000 1000 25600
net.core.somaxconn = 65535
net.ipv4.tcp_syncookies = 1
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 60
kernel.shmall = 1073741824
kernel.shmmax = 751619276800
net.ipv4.tcp_sack = 1
net.ipv4.tcp_timestamps = 1
vm.extfrag_threshold = 500
vm.overcommit_ratio = 90
vm.swappiness = 0

一、网络相关参数

1.net.ipv4.tcp_max_tw_buckets

表示系统中处于 TIME_WAIT 状态的最大连接数量。设置为 10000 即系统中最多同时存在 10000 个 TIME_WAIT 状态的连接。

作用:防止过多的 TIME_WAIT 状态连接占用系统资源。

2.net.ipv4.tcp_tw_reuse

设置为 1 时,允许将 TIME_WAIT 状态的套接字重新用于新的连接。

作用:在一定条件下复用处于 TIME_WAIT 状态的连接,提高连接建立的效率。

3.net.ipv4.tcp_keepalive_time

表示在没有数据传输的情况下,开始发送 keepalive 探测包之前的等待时间,单位为秒。此处设置为 30 秒。

作用:用于检测连接是否仍然有效,及时释放无效连接,节省系统资源。

4.net.ipv4.tcp_keepalive_probes

指定发送 keepalive 探测包的次数。此处设置为 9 次。

作用:与 keepalive 相关,在多次探测无响应后判定连接失效。

5.net.ipv4.tcp_keepalive_intvl

表示发送 keepalive 探测包的时间间隔,单位为秒。此处设置为 30 秒。

作用:控制 keepalive 探测包的发送频率。

6.net.ipv4.tcp_retries1

指定在本地主动建立连接的第一次重传尝试的次数。设置为 5 次。

作用:控制连接建立过程中第一次重传的次数,以提高连接建立的成功率。

7.net.ipv4.tcp_syn_retries

指定在主动建立连接时发送 SYN 包的重传次数。设置为 5 次。

作用:增加 SYN 包重传次数,提高连接建立的成功率。

8.net.ipv4.tcp_synack_retries

指定在被动建立连接(作为服务器端)时发送 SYNACK 包的重传次数。设置为 5 次。

作用:提高服务器端连接建立的成功率。

9.net.ipv4.tcp_retries2

指定在本地主动建立连接的第二次重传尝试的次数。设置为 12 次。

作用:在连接建立的后期阶段控制重传次数,提高连接建立成功率。

10.net.ipv4.tcp_rmem

定义了 TCP 接收缓冲区的大小范围,分别是最小、默认和最大的值。此处分别是 819225000016777216 字节。

作用:根据网络状况和应用需求调整接收数据的缓冲区大小,优化数据接收性能。

11.net.ipv4.tcp_wmem

定义了 TCP 发送缓冲区的大小范围,分别是最小、默认和最大的值。此处分别是 819225000016777216 字节。

作用:根据网络状况和应用需求调整发送数据的缓冲区大小,优化数据发送性能。

12.net.ipv4.ip_local_port_range

定义了本地 TCP 和 UDP 端口的使用范围。此处设置为从 26000 到 65535

作用:控制本地应用程序可使用的端口范围,合理分配端口资源。

13.net.ipv4.tcp_syncookies

设置为 1 时,启用 TCP 同步标记(SYN Cookie)功能,用于防范 SYN Flood 攻击。

作用:在面临 SYN Flood 攻击时,保护系统的连接建立功能,保障正常连接请求的处理。

14.net.core.somaxconn

指定系统中 Socket 监听队列的最大长度。设置为 65535

作用:增加监听队列长度,提高服务器同时处理连接请求的能力。

15.net.ipv4.tcp_max_syn_backlog

指定 TCP 连接请求队列(半连接队列)的最大长度。设置为 65535

作用:增加连接请求队列长度,提高系统处理并发连接请求的能力。

16.net.ipv4.tcp_fin_timeout

指定 TCP 连接关闭时,处于 FIN_WAIT_2 状态的连接的超时时间,单位为秒。设置为 60 秒。

作用:及时释放处于 FIN_WAIT_2 状态的连接资源。

17.net.ipv4.tcp_sack

设置为 1 时,启用 TCP 选择性确认(Selective AcknowledgmentSACK)功能。

作用:在数据包丢失的情况下,提高数据重传的效率,加快数据传输恢复速度。

18.net.ipv4.tcp_timestamps

设置为 1 时,启用 TCP 时间戳选项。

作用:有助于更精确地计算往返时间(Round-Trip TimeRTT),提高拥塞控制和重传机制的性能。

二、内存相关参数

1.vm.overcommit_memory

控制内存分配策略。0 表示检查是否有足够的可用内存来满足内存请求,如果没有则拒绝该请求。

作用:防止内存过度分配导致系统不稳定

2.vm.overcommit_ratio

当 vm.overcommit_memory 设置为 2 时,此参数指定内存过量分配的比例。

作用:与内存过量分配策略相关,用于确定在特定模式下可超额分配的内存比例。

3.vm.swappiness

表示系统使用交换分区(swap)的倾向程度,取值范围是 0 到 100,设置为 0 时表示尽量少使用交换分区。

作用:调整系统在内存不足时将内存数据交换到磁盘交换分区的频率。

三、信号量相关参数

1.kernel.sem

设置信号量参数,分别是 SEMMSL(每个信号集的最大信号数量)、SEMMNS(系统范围内的最大信号数量)、SEMOPM(每次 semop() 系统调用可执行的最大操作数量)、SEMMNI(系统范围内的最大信号集数量)。

作用:控制系统中信号量资源的分配和使用策略。

四、共享内存相关参数

1.kernel.shmall

表示系统一次可以使用的共享内存页的总数。

作用:控制系统可使用的共享内存总量,影响应用程序对共享内存的使用。

2.kernel.shmmax

表示单个共享内存段的最大尺寸。

作用:确定单个共享内存段的大小上限,应用程序创建的共享内存段不能超过此值。

3.vm.extfrag_threshold

内存碎片阈值,用于内存碎片的管理。

作用:当内存碎片程度超过此阈值时,系统会采取相应的碎片整理或内存回收策略。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论