Spec-Zone .ru
спецификации, руководства, описания, API
|
Прежде, ядро NDB, используемое отправить буфер, размер которого был фиксирован в 2 МБ для каждого узла в кластере, этот буфер, выделяемый когда запущенный узел. Поскольку размер этого буфера не мог быть изменен после того, как кластер был запущен, было необходимо сделать достаточно большим заранее, чтобы разместить максимальную возможную загрузку на любом сокете транспортера. Однако, это было неэффективным использованием памяти, так как большая часть ее часто шла неиспользованная, и могла закончиться в больших количествах ресурсов, потраченных впустую, увеличиваясь ко многим узлам API.
Эта проблема была в конечном счете решена (в MySQL Cluster NDB 7.0), используя объединенный, отправляют буфер, память которого выделяется динамически от пула, совместно использованного всеми транспортерами. Это означает, что размер отправить буфера может быть скорректирован по мере необходимости. Конфигурация объединенного передается, буфер может выполненный, устанавливая следующие параметры:
TotalSendBufferMemory
. Эти параметры могут быть
установлены для всех типов узлов MySQL Cluster — то есть, они могут быть установлены в [ndbd]
, [mgm]
, и [api]
(или [mysql]
) разделы config.ini
файл. Это представляет общую сумму памяти (в байтах), чтобы
быть выделенным каждым узлом, для которого это устанавливается для использования среди всех
сконфигурированных транспортеров. Если установлено, его минимум составляет 256 Кбит; максимум
4294967039.
Чтобы быть обратно совместимым с существующими конфигурациями, этот параметр берет в качестве его значения по умолчанию, которое сумма максимума отправляет буферным размерам всех сконфигурированных транспортеров плюс дополнительный 32 Кбита (одна страница) на транспортер. Максимум зависит от типа транспортера, как показано в следующей таблице:
Транспортер | Maxmimum Отправляют Размер буфера (байты) |
---|---|
TCP | SendBufferMemory (значение по умолчанию = 2M)
|
SCI | SendLimit
(значение по умолчанию = 8 K) плюс 16 K
|
ОТМЕТКА КУРСА КОРАБЛЯ | 20 K |
Это позволяет существующим конфигурациям функционировать в близко к тому же самому пути, как они сделали с MySQL Cluster NDB 6.3 и ранее, с тем же самым объемом памяти и отправляют пространство буфера, доступное каждому транспортеру. Однако, память, которая неиспользована одним транспортером, не доступна другим транспортерам.
OverloadLimit
. Этот параметр используется в
config.ini
файл [tcp]
раздел, и обозначает
количество неотправленных данных (в байтах), который должен присутствовать в отправить буфере прежде,
чем соединение будут считать перегруженным. Когда такое условие перегрузки происходит, транзакции,
которые влияют на перегруженный сбой соединения с Ошибкой API NDB 1218 (Отправляют Буферы, перегруженные в ядре NDB)
до передач состояния перегрузки. Значение по умолчанию 0, когда эффективный предел перегрузки
вычисляется как SendBufferMemory * 0.8
для данного соединения. Максимальное
значение для этого параметра является 4G.
SendBufferMemory
. Это значение обозначает
жесткий предел для объема памяти, который может использоваться единственным транспортером из всего пула,
определенного TotalSendBufferMemory
. Однако, сумма SendBufferMemory
поскольку все сконфигурированные транспортеры могут быть больше чем TotalSendBufferMemory
это устанавливается для данного узла. Это -
способ сохранить память, когда много узлов используются, пока максимальный объем памяти никогда не
требуется всеми транспортерами одновременно.