Связь между спецификациями системы и параметрами конфигурации Cassandra - PullRequest
0 голосов
/ 08 мая 2018

Существует ли связь между параметрами конфигурации Cassandra (приведенными ниже с текущими значениями), параметрами конфигурации драйвера C ++ Datastax (приведенными ниже с текущими значениями) и аппаратными спецификациями узла (количество процессоров, ОЗУ, количество дисков и т. Д.) )

Параметры конфигурации Кассандры (в YAML)

concurrent_reads set as 16
concurrent_writes set as 256
native_transport_max_threads set as 256
native_transport_max_frame_size_in_mb set as 512

Параметры конфигурации драйвера C ++ для Datastax

cass_cluster_set_num_threads_io set as 10
cass_cluster_set_core_connections_per_host set as 1
cass_cluster_set_max_connections_per_host set as 20
cass_cluster_set_max_requests_per_flush set as 10000

Характеристики узла

No. of processors: 32
RAM: >150 GB
No. of hard disks: 1

Cassandra's Version: 3.11.2 Datastax C++ driver version: 2.7 RHEL version: 6.5

У меня есть кластер из 2 узлов, и я получаю удручающую пропускную способность (12000 операций в секунду). 1 операция = чтение + запись (я не могу использовать кеш строк). Есть ли какой-либо параметр, который должен был быть установлен выше / ниже (учитывая спецификации узлов)?

Обратите внимание, что мое приложение для чтения и записи является многопоточным (10 потоки). Кроме того, я делаю асинхронное чтение + асинхронная запись (используя будущее). Коэффициент репликации равен 2, оба узла находятся в одном DC, согласованность Уровень для чтения и записи также равен 2.

1 Ответ

0 голосов
/ 08 мая 2018

Некоторые свойства конфигурации в Cassandra вычисляются на основе доступных ядер и дисков ЦП.

concurrent_reads = 16 * (number of drives)
concurrent_writes = 8 * (CPU cores)

Похоже, что вы сделали это, хотя я бы задал вопрос, все ли ваши 32 ЦП являются физическимиЯдра, или гиперпоточность.

У меня есть кластер из 2 узлов, и я получаю удручающую пропускную способность (12000 операций в секунду).

Просто мое мнение, но Я думаю, что 12 тыс. операций в секунду это довольно хорошо.На самом деле ДЕЙСТВИТЕЛЬНО хорошо для кластера из двух узлов.Кассандра масштабируется горизонтально и при этом линейно.Таким образом, решение здесь простое: добавьте больше узлов.

Какова ваша целевая операция в секунду?Прямо сейчас вы доказываете, что можете получить 6 тыс. Операций в секунду на узел.Это означает, что если вы добавите еще один, кластер должен поддерживать 18K / сек.Если вы перейдете на шесть узлов, вы сможете поддерживать 36k / sec.По сути, выясните свою цель и выполните математику.

Одна вещь, которую вы могли бы рассмотреть, это попробовать ScyllaDB .Сцилла является сменной заменой Cassandra, которая заявляет о способности достичь очень высоких требований к пропускной способности.Недостатком является то, что я думаю, что Scylla - это только Cassandra 2.1 или 2.2 совместимый банкомат.Но, возможно, стоит попробовать, основываясь на том, что вы пытаетесь сделать.

...