Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Configuring NDB Cluster Send Buffer Parameters

25.4.3.14 配置 NDB 集群发送缓冲参数

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

  • TotalSendBufferMemory.  该参数可以在 NDB 集群的所有类型节点上设置,即可以在 [ndbd][mgm][api](或 [mysql])部分的 config.ini 文件中设置。它表示每个节点为所有配置的传输器分配的总内存量(以字节为单位)。如果设置,其最小值为 256KB;最大值为 4294967039。

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

    表 25.22 传输器类型与最大发送缓冲区大小

    Transporter Maximum Send Buffer Size (bytes)
    TCP SendBufferMemory(默认 = 2M)
    SHM 20K

    这使得现有的配置可以像 NDB 集群 6.3 及更早版本那样工作,具有相同的内存和发送缓冲区空间可供每个传输器使用。但是,未使用的内存不能被其他传输器使用。

  • OverloadLimit.  该参数在 config.ini 文件的 [tcp] 部分中使用,表示发送缓冲区中未发送的数据量(以字节为单位),以确定连接是否过载。当这种过载条件发生时,影响该连接的交易将失败,返回 NDB API 错误 1218(NDB 内核中的发送缓冲区过载),直到过载状态消失。默认值为 0,在这种情况下,有效的过载限制是根据给定连接的 SendBufferMemory * 0.8 计算的。该参数的最大值为 4G。

  • SendBufferMemory.  该值表示单个传输器可以使用的内存量的硬性限制,从总池中分配的内存量指定为 TotalSendBufferMemory。然而,所有配置的传输器的 SendBufferMemory 之和可能大于给定节点的 TotalSendBufferMemory。这是一种在多个节点使用时节省内存的方法,只要所有传输器不同时需要最大内存量。

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