Очень медленно пишет на Кассандре - PullRequest
1 голос
/ 28 октября 2011

Я новичок в NoSQL и Cassandara, в частности. В настоящий момент мы проводим сравнительный анализ с Cassandra и испытываем очень медленную пропускную способность записи.

Как сказано, Кассандра может выполнять сотни тысяч вставок в секунду, однако я не наблюдаю этого: 1) когда я посылаю 100 тысяч вставок одновременно через 8 клиентов CQL, тогда пропускная способность составляет ~ 14470 вставок в секунду. 2) когда я делаю то же самое через 8 клиентов Thrift, пропускная способность составляет ~ 16300 операций вставки в секунду.

Я думаю, что производительность Cassandra можно улучшить, но я не знаю, что настраивать. Пожалуйста, посмотрите на условия тестирования ниже и посоветуйте что-нибудь. Спасибо.

Условия испытаний:

1. Кластер Cassandra развернут на трех машинах, каждая машина имеет 8 ядер Intel® Xeon® R E5420 @ 2,50 ГГц, оперативная память 16 ГБ, скорость сети 1000 МБ / с. 1015 *

2. Пример данных *

set MM[utf8('1:exc_source_algo:20100105000000.000000:ENTER:0')]['order_id'] = '1.0';
set MM[utf8('1:exc_source_algo:20100105000000.000000:ENTER:0')]['security'] = 'AA1';
set MM[utf8('1:exc_source_algo:20100105000000.000000:ENTER:0')]['price'] = '47.1';
set MM[utf8('1:exc_source_algo:20100105000000.000000:ENTER:0')]['volume'] = '300.0';
set MM[utf8('1:exc_source_algo:20100105000000.000000:ENTER:0')]['se'] = '1';
set MM[utf8('2:exc_source_algo:20100105000000.000000:ENTER:0')]['order_id'] = '2.0';
set MM[utf8('2:exc_source_algo:20100105000000.000000:ENTER:0')]['security'] = 'AA1';
set MM[utf8('2:exc_source_algo:20100105000000.000000:ENTER:0')]['price'] = '44.89';
set MM[utf8('2:exc_source_algo:20100105000000.000000:ENTER:0')]['volume'] = '310.0';
set MM[utf8('2:exc_source_algo:20100105000000.000000:ENTER:0')]['se'] = '1';
set MM[utf8('3:exc_source_algo:20100105000000.000000:ENTER:0')]['order_id'] = '3.0';
set MM[utf8('3:exc_source_algo:20100105000000.000000:ENTER:0')]['security'] = 'AA2';
set MM[utf8('3:exc_source_algo:20100105000000.000000:ENTER:0')]['price'] = '0.35';

3. Журнал фиксации записывается на локальный жесткий диск, данные записываются на блеск.

4. Описание ключа

Keyspace: MD:
  Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
  Durable Writes: true
    Options: [datacenter1:1]
  Column Families:
    ColumnFamily: MM
      Key Validation Class: org.apache.cassandra.db.marshal.BytesType
      Default column value validator: org.apache.cassandra.db.marshal.BytesType
      Columns sorted by: org.apache.cassandra.db.marshal.BytesType
      Row cache size / save period in seconds: 0.0/0
      Key cache size / save period in seconds: 200000.0/14400
      Memtable thresholds: 2.3249999999999997/1440/496 (millions of ops/minutes/MB)
      GC grace seconds: 864000
      Compaction min/max thresholds: 4/32
      Read repair chance: 1.0
      Replicate on write: true
      Built indexes: []

Ответы [ 2 ]

2 голосов
/ 29 октября 2011

Особенно с клиентами Python вы можете увидеть лучшую производительность, запустив каждый клиент как отдельный процесс, а не поток, из-за глобальной блокировки интерпретатора.

После этого попробуйте разделить клиенты на несколько машин, если это возможно.

Кроме того, убедитесь, что ваши клиенты связываются со всеми тремя узлами, чтобы рабочая нагрузка была равномерно распределена.

Запись данных на Luster, а не на локальный диск, может быть фактором, но у меня нет опыта с Luster, чтобы сказать.

2 голосов
/ 28 октября 2011

Используете ли вы 8 потоков / процессов для записи?Если каждая запись занимает 0,5 мс, то 8 потоков / процессов могут выполнять только 16 000 операций записи в секунду.

...