2016-08-18 5 views
0

В одной из моих таблиц насчитывается около 20 миллионов строк (которые могут увеличиваться в будущем), которые необходимо обновлять ежедневно.Регулярные обновления на определенном наборе строк ухудшили производительность cassandra

Ранее этот процесс обновления был довольно плавным (пропускная способность около 100 тыс. Обновлений/мин без увеличения нагрузки на машинах). Но после 1 месяца регулярных обновлений производительность сильно ухудшилась. Теперь, даже если я пытаюсь выполнять обновления с низкой пропускной способностью, то есть около 30 000 об/мин, средняя загрузка на машинах становится высокой, а другие запросы также оказываются затронутыми.

Кассандра версия -> 2.0.14

машина конфигурация -> (RAID-1, 1 ТБ, 32core, 64 ГБ ОЗУ), аналогичная 4 машины с коэффициентом репликации 3.

Уплотнительная Стратегия данной таблицы -> SizeTiered

Какие изменения я должен попытаться масштабировать его?

ответ

1

Вот некоторые идеи для вас:

  • Cassandra предпочитает более мелкие машины вместо нескольких больших. Рекомендуется хранить кучу 8 ГБ макс. большая куча = длинная GC = паузы и более низкая производительность (это может быть ваш случай, но вы должны следить за своей средой, проверить, является ли это GC с процессором или что). Также не храните слишком много данных на одном узле, ремонт & может занять слишком много времени и взять процессор.

  • вы можете попробовать настроить свою Кассандру (смотрите, например, this guide - к сожалению, для Cassandra 2.1)

  • вы можете также рассмотреть Cassandra обновить
  • если обновить всю таблицу ежедневно - то это может быть антишаблона для cassandra - большое количество обновлений = более длительные транзакции. если вы хотите сохранить текущий дизайн, я бы рекомендовал также иметь больше узлов с меньшим количеством данных на узел и проверить, сколько времени & ресурсов принимает процесс уплотнения
+0

Размер кучи Я сохранил только 8 ГБ. Я попытаюсь добавить больше узлов и монитор. Любые предложения по настройке небольших компьютеров? –

+0

Также я проверил журналы системы cassandra для синхронизации GC, там я обнаружил, что GC для ConcurrentMarkSweep занимает 8 секунд. в среднем. Но его раз в день. Это, возможно, не проблема. –

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