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