2016-01-28 8 views
1

Во-первых, простите мой бедный английский.Memsql: почему использование памяти настолько велико?

Моя тестовая среда:


Да, только один мастер и один лист. Я установил max_memory = 10G на листовой узел. : Комментарий:

Здесь возникает вопрос: для табличных данных используется только память 334M, но на листовом узле используется память 13.34G. Почему это?

Кстати, мой сценарий использования похож на «Тест скорости», пакетную вставку и пакетное удаление.

спасибо!

memsql

ответ

0

Как отмечено в информационном подсказке рядом с «эффектом памяти», эта цифра включает в кэш памяти, используемый MemSQL, который был выделен в прошлом, но не активно используется. Это наиболее вероятная причина, по которой она была бы намного выше, чем ваш текущий размер таблицы.

Чтобы узнать, где именно MemSQL использует память, щелкните узел в Ops и перейдите на страницу узла MemSQL, там будет больше информации об использовании памяти.

+0

Благодарим вас за ответ. Фактически, я встретил «Linux Out of Memory Behavior». Даже если был установлен максимальный_memory = 10G, memsql все еще может использовать более 10 ГБ памяти, а процесс memsql будет уничтожен linux.Что можно сделать Делай сейчас? – downkang

+0

Пара вопросов: убедитесь, что вы устанавливаете максимальную_мам на листовом узле - вы можете проверить, посмотрев на «show variables» на этом узле. Кроме того, что такое использование памяти, сообщаемое на этом узле, вы можете проверить, выполнив «статус шоу расширенный» или глядя на узел в Ops. –

+0

1. Я уверен, что max_memory = 10G на листовом узле. 2.I перечисляет некоторый статус: Alloc_table_memory = 360.5 MB Alloc_table_metadata_cache = 1296.9 MB Buffer_manager_memory = 2259.0 MB Malloc_active_memory = 16322.7 (+0.0) MB Malloc_cumulative_memory = 2826581.1 (+2.5) MB 3.I runned dmesg | grep -i "out of memory", и обнаружил, что linux убил memsql-процесс три раза. Недостаточно памяти: процесс убийства 18323 (memsqld) оценка 966 или жертва ребенка – downkang