Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.4 NDB Cluster的配置  / 23.4.3 NDB Cluster 配置文件  /  21.4.3.13 配置 NDB Cluster 发送缓冲区参数

21.4.3.13 配置 NDB Cluster 发送缓冲区参数

NDB内核使用统一的发送缓冲区,其内存是从所有传输器共享的池中动态分配的 。这意味着可以根据需要调整发送缓冲区的大小。统一发送缓冲区的配置可以通过设置以下参数来完成:

  • 总发送缓冲区内存。  可以为所有类型的 NDB Cluster 节点设置此参数——也就是说,它可以在文件的 [ndbd][mgm][api](或[mysql])部分中设置config.ini。它表示每个节点分配的内存总量(以字节为单位),它被设置为在所有配置的传输器中使用。如果设置,它的最小值为 256KB;最大值为 4294967039。

    为了与现有配置向后兼容,此参数的默认值是所有已配置传输器的最大发送缓冲区大小的总和,加上每个传输器额外的 32KB(一页)。最大值取决于运输车的类型,如下表所示:

    表 21.21 具有最大发送缓冲区大小的传输器类型

    运输车 最大发送缓冲区大小(字节)
    TCP SendBufferMemory(默认 = 2M)
    健康管理学院 20K

    这使得现有配置能够以与 NDB Cluster 6.3 及更早版本相同的方式运行,具有相同数量的内存和每个传输器可用的发送缓冲区空间。但是,一个传输器未使用的内存对其他传输器不可用。

  • 过载限制。  此参数用于 config.ini文件 [tcp]部分,表示在连接被视为过载之前必须存在于发送缓冲区中的未发送数据量(以字节为单位)。当发生这种过载情况时,影响过载连接的事务会失败并出现 NDB API 错误 1218(发送缓冲区在 NDB 内核中过载),直到过载状态通过。默认值为 0,在这种情况下,有效过载限制是SendBufferMemory * 0.8针对给定连接计算的。此参数的最大值为 4G。

  • 发送缓冲区内存。  该值表示一个硬性限制,可以由指定的整个池中的单个传输器使用的内存量 TotalSendBufferMemory。但是,SendBufferMemory 所有配置的传输器的总和可能大于 TotalSendBufferMemory 为给定节点设置的总和。这是一种在使用许多节点时节省内存的方法,只要所有传输器都不会同时需要最大内存量。

  • ReservedSendBufferMemory。  在 NDB 7.5 GA 之前删除。

    版本(或更高版本) 新开发银行 7.5.0
    类型或单位 字节
    默认 256K
    范围 0 - 4294967039 (0xFFFFFEFF)
    删除 新开发银行 7.5.2
    重启类型

    N(新开发银行 7.5.0)

    以前,此数据节点参数存在,但并未实际使用(错误#77404,错误#21280428)。

您可以使用该 ndbinfo.transporters表来监视发送缓冲区内存使用情况,并检测可能对性能产生不利影响的减速和过载情况。