STCS: как я могу улучшить производительность уплотнения? - PullRequest
0 голосов
/ 11 мая 2019

У меня есть шесть узлов кластера Cassandra, в которых размещается большое семейство столбцов (таблица cql), которое является неизменным (потому что это своего рода таблица истории с точки зрения приложения).Такая таблица содержит около 400Go сжатых данных, что не так уж и много!

Так что после усечения таблицы, а затем загрузки в нее данных истории приложения, я запускаю nodetool compact на каждом узле, чтобы обеспечить лучшую производительность чтения за счет уменьшения количества SSTables.Стратегия сжатия: STCS .

После запуска nodetool compact я запускаю nodetool compactionstats , чтобы следить за ходом уплотнения:

 id  compaction type    keyspace        table            completed total    unit  progress
 xxx Compaction         mykeyspace      mytable          3.65 GiB  1.11 TiB bytes 0.32%

Через часов У меня на том же узле:

 id  compaction type    keyspace        table            completed total    unit  progress
 xxx Compaction         mykeyspace      mytable          4.08 GiB  1.11 TiB bytes 0.36%

Так что процесс сжатия, кажется, работает, но он ужасно медленный .

Даже с nodetool setcompactionthreshold - 0 , сжатие остается ужасно медленным.Более того, CPU , кажется, используется для 100% из-за этого уплотнения.

Вопросы:

  1. Какие параметры конфигурации я могу настроить, чтобы повысить производительность уплотнения?
  2. Может ли 100% ЦП при сжатии быть связан с давлением ГХ?
  3. Если уплотнение происходит слишком медленно, это важнодобавить больше узлов или добавить больше ЦП / ОЗУ для каждого узла?Может ли это помочь?

1 Ответ

2 голосов
/ 12 мая 2019

Производительность сжатия зависит от базового оборудования - его производительность зависит от того, какие диски используются и т. Д. Но это также зависит от того, сколько потоков сжатия разрешено запускать и какая пропускная способность настроена для потоков сжатия. Пропускная способность сжатия из командной строки настраивается nodetool setcompactionthroughput, а не nodetool setcompactionthreshold, как вы использовали. Количество одновременных уплотнителей устанавливается с nodetool setconcurrentcompactors (но доступно в 3.1, IIRC). Вы также можете настроить значения по умолчанию в cassandra.yaml.

Таким образом, если у вас достаточно мощности процессора и хороших SSD-дисков, вы можете увеличить пропускную способность уплотнения и количество компакторов.

...