2012-01-04 12 views
1

Я работаю над настройкой Кассандры одного узла. Система, которую я использую, имеет 4-ядерный процессор с 8 ГБ оперативной памяти. Свойства семейства колонки, которые я использую:Как улучшить производительность чтения/записи Cassandra?

Keyspace: keyspace1: 
    Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy 
    Durable Writes: true 
    Options: [datacenter1:1] 
    Column Families: 
    ColumnFamily: colfamily (Super) 
     Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type 
     Default column value validator: org.apache.cassandra.db.marshal.UTF8Type 
     Columns sorted by: org.apache.cassandra.db.marshal.UTF8Type/org.apache.cassandra.db.marshal.BytesType 
     Row cache size/save period in seconds/keys to save : 100000.0/0/all 
     Row Cache Provider: org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider 
     Key cache size/save period in seconds: 200000.0/14400 
     GC grace seconds: 864000 
     Compaction min/max thresholds: 4/32 
     Read repair chance: 1.0 
     Replicate on write: true 
     Built indexes: [] 
     Compaction Strategy: org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy 

Я попытался вставить 1Million строк в семье столбца. Пропускная способность для записи составляет около 2500 в секунду, а чтение составляет около 380 в секунду.

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

+0

Сколько потоков вы используете для запуска вашего примера? – zznate

+0

@zznate: Для примера существует только один поток. –

+1

Это значит, что для одного потока тогда. Вы можете использовать инструмент стресса в дистрибутиве источника apache для некоторой простой проверки производительности: https://github.com/apache/cassandra/tree/trunk/tools/stress – zznate

ответ

1

380 в секунду означает, что вы читаете данные с жесткого диска с низким коэффициентом захвата кеша или операционной системой. Проверьте статистику Cassandra, чтобы узнать, как использовать кеш:

./nodetool -host <IP> cfstats 

Вы включили кеширование строк и ключей. row cache будет считывать целую строку в RAM - означает все столбцы, заданные ключом строки. В этом случае вы можете отключить кеш ключей. Но убедитесь, что у вас достаточно свободной памяти для обработки кэширования строк.

Если у вас есть Cassandra с кешем-кешем (по умолчанию от 1.x), возможно, что кеш строк очень большой, и ОС начала свопинга - проверьте размер свопинга - это может снизить производительность.

+0

Чрезвычайно важно для ответа. Строка в семействе столбцов имеет только один столбец размером 4 КБ. Это повлияет на пропускную способность? –

+0

нет - в этом случае используйте кеш-память и отключите кеш-ключ –

Смежные вопросы