25.4.3.14 Настройка параметров буфера отправки кластера NDB
Ядро NDB использует унифицированный буфер отправки, память для которого выделяется динамически из пула, разделяемого всеми транспортёрами. Это означает, что размер буфера отправки можно корректировать по мере необходимости. Настройка унифицированного буфера отправки выполняется путём задания следующих параметров:
-
TotalSendBufferMemory. Этот параметр может быть задан для всех типов узлов кластера NDB — то есть, он может быть задан в разделах
[ndbd],[mgm]и[api](или[mysql]) файлаconfig.ini. Он представляет собой общее количество памяти (в байтах), которое должен выделять каждый узел, для которого он задан, для использования среди всех настроенных транспортёров. Если задан, его минимальное значение составляет 256 КБ; максимальное — 4294967039.Для обратной совместимости с существующими конфигурациями, по умолчанию этот параметр принимает значение, равное сумме максимальных размеров буферов отправки всех настроенных транспортёров плюс дополнительные 32 КБ (одна страница) на транспортёр. Максимальное значение зависит от типа транспортёра, как показано в следующей таблице:
Таблица 25.22 Типы транспортёров с максимальными размерами буфера отправки
Таблица 25.22 Типы транспортёров с максимальными размерами буфера отправки Транспортёр Максимальный размер буфера отправки (байты) TCP SendBufferMemory(по умолчанию = 2 МБ)SHM 20 КБ Это позволяет существующим конфигурациям работать практически так же, как и с кластером NDB 6.3 и более ранними версиями, с тем же количеством памяти и места в буфере отправки, доступном для каждого транспортёра. Однако память, не используемая одним транспортёром, недоступна для других транспортёров.
OverloadLimit. Этот параметр используется в файле
config.iniв разделе[tcp]и обозначает количество неотправленных данных (в байтах), которые должны присутствовать в буфере отправки, прежде чем соединение считается перегруженным. При возникновении такой перегрузки транзакции, затрагивающие перегруженное соединение, завершаются с ошибкой NDB API 1218 (Буферы отправки перегружены в ядре NDB) до тех пор, пока состояние перегрузки не исчезнет. Значение по умолчанию равно 0, в этом случае эффективный предел перегрузки рассчитывается какSendBufferMemory * 0.8для данного соединения. Максимальное значение для этого параметра равно 4 ГБ.SendBufferMemory. Это значение обозначает жёсткий лимит на количество памяти, которое может использовать один транспортёр из всего пула, указанного в
TotalSendBufferMemory. Однако суммаSendBufferMemoryдля всех настроенных транспортёров может быть больше, чемTotalSendBufferMemory, установленное для данного узла. Это способ экономии памяти при использовании многих узлов, если максимальное количество памяти никогда не требуется всем транспортёрам одновременно.
Вы можете использовать таблицу ndbinfo.transporters для мониторинга использования памяти буфера отправки и выявления замедления и перегрузки, которые могут негативно повлиять на производительность.
© 2025 Oracle
Licensed under the GPLv2 License.