2016-03-23 4 views
0

У меня есть 4 узла Cassandra 2.1.13 Кластер с настройками ниже.Управление памятью кэша Cassandra

32 GB Ram Max HEAP SIZE - 8 GB 250 ГБ Жесткий диск Каждый (не SSD).

Я пытаюсь выполнить нагрузочный тест при записи и чтении. Я создал многопоточную программу для создания 50 миллионов записей. Каждая строка содержит 30 столбцов.

Я смог вставить 50 миллионов записей за 84 минуты со скоростью 9,5 тыс. Вставки в секунду.

Далее я пытался прочитать эти 50 миллионов записей случайным образом с использованием 32 клиентов, и я смог читать 28K в секунду.

Проблема возникает через некоторое время, память заполняется и большая часть ее кэшируется. почти 20 ГБ. Через некоторое время система зависает из-за нехватки памяти.

Если я очищаю кэш-память, моя скорость чтения снижается до 100 в секунду.

Как я могу управлять своей кэш-памятью, не влияя на производительность чтения.

Сообщите мне, если вам нужна дополнительная информация.

+0

Как вы можете проверить, что «память заполнена»? Есть ли исключения OOM в журналах Cassandra? Вы настроили пространство подкачки для системы? –

+0

используя верхнюю команду, я вижу, что доступно менее 500 МБ. Используется 11 ГБ, и все остальные кэшируются. Swap отключен. –

ответ

0

Что вы заметили, это кеш-диск Linux, который должен обслуживать данные из ОЗУ вместо того, чтобы идти на диск, чтобы ускорить доступ к чтению данных. Пожалуйста, не забудьте понять, как это работает, например. см. here.

Поскольку вы уже используете верхнюю часть, я бы рекомендовал добавить «кэш-промахи» также в обзор (нажмите F + выберите nMaj). Это покажет вам всякий раз, когда считывание диска не может быть выполнено кешем. Вы должны увидеть увеличение промахов, как только кеш страницы начнет насыщаться.

Как я могу управлять своей кэш-памятью, не влияя на производительность чтения.

Кэш полностью управляется Linux и не нуждается в каких-либо действиях с вашей стороны, чтобы позаботиться.

Смежные вопросы