Как настроить cassandra для развертывания большого сервера без операционной системы - PullRequest
0 голосов
/ 07 мая 2020

У меня Cassandra развернута на больших серверах baremetal. 56 ядер и 756 ГБ оперативной памяти 20 ТБ SSD. (Я знаю, что это антипаттерн, но у меня нет выбора для создания виртуальной машины или чего-то еще). Это кластер из 10 узлов. Какие настройки важны для таких развертываний.

У меня большая нагрузка на чтение и запись. Длительное время уплотнения, приводящее к тайм-аутам чтения и записи.

Я не вижу, что процессор, память, диск или сеть являются узким местом

1 Ответ

0 голосов
/ 07 мая 2020

Итак, у меня есть поговорка с плотными архитектурами узлов: «Большие серверы - это большие проблемы».

Я могу придумать несколько вещей, которые могут помочь.

В cassandra.yaml проверьте эти два параметра:

concurrent_compactors: 2
compaction_throughput_mb_per_sec: 16

В частности, concurrent_compactors является одним из тех, которые можно установить пропорционально количеству ядер ЦП. Я бы не стал go слишком высоким, но, может быть, протестирую его, увеличив в 2 раза, и посмотрю, заметите ли вы что-нибудь. Кроме того, с вашими ресурсами вы сможете установить compaction_throughput_mb_per_sec как минимум на 256. Хорошая новость об этом в том, что вы можете установить его с помощью nodetool эфемерно, просто чтобы попробовать.

Убедитесь, что параметры диска c оптимизированы для SSD:

disk_optimization_strategy: ssd
trickle_fsync: true

И убедитесь, что серверы настроены на использование сборщика G1G C, и вы, вероятно, могли бы позволить себе большая куча размером 32 ГБ или около того.

Также прочтите Руководство по настройке Кассандры 2.1 Эми Тоби . У нее есть много полезной информации, которая все еще применима к Кассандре 3.

TBH, хотя Алекс прав. Самый большой успех будет в корректировке определений ваших таблиц. Производительность Кассандры больше связана с определением модели данных. Если это неверно, то никакая "настройка" на стороне сервера не может помочь с этим.

...