это вопрос новичка. Я пытался сделать домашнее задание, но я застрял, пытаясь узнать, как кассандра будет масштабироваться линейно, как рекламируется. Когда я бегу против одного узла кассандры, я получаю разумные ставки вставки. Вот некоторые соответствующие биты информации:Почему моя пропускная способность cassandra не улучшается при добавлении узлов?
- CentOS 6,5
- Java 1.7.0_71
- Cassandra 2.1.4 двоичных загрузить
- данных и commitlog на разных дисках
- compaction_throughput_mb_per_sec: 0
- 10 000 000 вставок
- Вставка: ~ 110K вставки/с
- Еще не реализовано these settings, так как я не заинтересован в том, чтобы делать вещи быстрыми, как при наблюдении линейного масштабирования.
Мои определения ключевого пространства заключается в следующем:
create keyspace nms WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
use nms;
CREATE TABLE RN(tableId int, sampleTime timestamp, sampleValue bigint, sampleStdev bigint, sampleRate bigint, tz_offset int,
PRIMARY KEY (tableId, sampleTime));
Мой соответствующий код Java выглядит следующим образом (примерно):
cluster = Cluster.builder().addContactPoint("138.42.229.240")
.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.ANY))
.withRetryPolicy(DefaultRetryPolicy.INSTANCE)
.withLoadBalancingPolicy(new TokenAwarePolicy(new RoundRobinPolicy()))
.build();
session = cluster.connect("nms");
batch = new BatchStatement();
statement = session.prepare("INSERT INTO RN" +
"(tableId, sampleTime, sampleValue, sampleStdev, sampleRate, tz_offset)" +
"VALUES (?, ?, ?, ?, ?, ?);");
Я вставив 32 tableIds (ключевых разделов), каждый из «находящихся в собственности «одним потоком и уникальными образцами. Другие данные - это барахль наполнителя.
Я нашел, что сладкое пятно должно быть ~ 10 вставок в каждой партии и 10 групп вызовов executeAsync().
Пока все хорошо. Теперь добавлено 4 узла, скручивание аппаратных средств и 3 виртуальных машины, работающих на SSD SAN (не идеальное, я знаю). Я использовал подобную конфигурацию для каждого узла как то, что я описал выше, и провел мой простой тест, ожидая некоторых улучшений. Скорость ввода не изменилась. Я не могу это объяснить. Я бы ожидал некоторого улучшения. Более того, ставка остается практически неизменной с 2, 3, 4 и 5 узлами. Я понимаю, что странные числа, вероятно, не имеют никакого смысла, но я был в отчаянии.
Затем я попытался настроить пространство ключей с коэффициентом репликации равным нулю. Мои скорости передачи данных снизились до 1K вставки/с. Я не могу это объяснить. Я должен упустить что-то действительно очевидное, но я не вижу его.
Похоже, вы прибили его. Я добавил больше клиентов, и моя пропускная способность до ~ 170K/s. Интересно, что все мои клиенты действительно забивают свои процессоры независимо от скорости. Я ожидал, что некоторые ждут, чтобы облегчить работу центрального процессора клиентов, поскольку они подчеркивают серверы. С другой стороны, серверы cassandra заняты, но не кажутся забитыми. Полагаю, мне, наверное, нужно оптимизировать серверы. Спасибо за вашу помощь. Вы получаете ответ на кредит, так как вы ответили первым ;-) –