配置NDB集群发送缓冲区参数
该NDB
核心采用统一发送缓冲区,其内存是由所有转运共享池动态分配。这意味着可以根据需要调整发送缓冲区的大小。可以通过设置以下参数来完成统一发送缓冲区的配置:
TotalSendBufferMemory。该参数可为所有类型的NDB Cluster节点-即来设定,它可以在被设置
[ndbd]
,[mgm]
和[api]
(或[mysql]
所述的)部分config.ini
文件。它代表设置为在所有已配置的传输器中使用的每个节点要分配的内存总量(以字节为单位)。如果设置,则最小值为256KB;最大值为4294967039。为了与现有配置向后兼容,此参数将所有已配置的传输器的最大发送缓冲区大小的总和加上每个传输器的额外32KB(一页)作为其默认值。最大值取决于运输工具的类型,如下表所示:
具有最大发送缓冲区大小的传输器类型
运输者 最大发送缓冲区大小(字节) TCP协议 SendBufferMemory
(默认= 2M)SHM 20K 这使现有配置能够以与NDB Cluster 6.3及更早版本相同的方式运行,并具有相同的内存量,并为每个传输器发送可用的缓冲区空间。但是,一个传输器未使用的内存对其他传输器不可用。
- OverloadLimit。此参数在
config.ini
文件[tcp]
部分中使用,表示在认为连接过载之前必须存在于发送缓冲区中的未发送数据量(以字节为单位)。当发生这种过载情况时,影响过载连接的事务将失败,并显示NDB API错误1218(NDB内核中的发送缓冲区过载),直到过载状态通过。默认值为0,在这种情况下,将根据SendBufferMemory * 0.8
给定连接计算有效过载极限。该参数的最大值为4G。 - SendBufferMemory。此值表示对由所指定的整个池中的单个传输器可能使用的内存量的硬性限制
TotalSendBufferMemory
。但是,SendBufferMemory
所有配置的传输器的总和可能大于TotalSendBufferMemory
为给定节点设置的总和。这是一种在使用多个节点时节省内存的方法,只要所有传输器都不会同时要求最大内存量即可。
您可以使用该ndbinfo.transporters
表监视发送缓冲区的内存使用情况,并检测可能对性能产生不利影响的速度减慢和过载情况。