Cassandra Amazon EC2, эксперименты с производительностью чтения

Мне нужна помощь в улучшении производительности чтения Cassandra. Меня беспокоит ухудшение производительности чтения по мере увеличения размера семейства столбцов. У нас есть следующая статистика по одному -узлу Cassandra.

Операционная система:Linux -CentOS версии 5.4 (Final)
Версия Кассандры:апач -кассандра -1.1.0
Java-версия:«1.6.0 _14» Java (TM )SE Runtime Environment (сборка 1.6.0 _14 -b08 )Java HotSpot (TM )64 -Bit Server VM (сборка 14.0 -b16, смешанный режим)

Конфигурация Кассандры:(cassandra.yaml)

  • rpc _сервер _тип :hsha
  • диск _доступ _режим :mmap
  • одновременное _чтение :64
  • одновременно _пишет :32

Платформа:Экземпляр Amazon -ec2/Rightscale m1.Xlarge с 4 эфемерными дисками с RAID0. (15 ГБ общей памяти, 4 виртуальных ядра, 2 ЭБУ,Всего ЭКЮ = 8)


Конфигурации эксперимента: Я попытался провести несколько экспериментов с GC

. Конфигурация Кассандры:
10 ГБ ОЗУ выделено для кучи Cassandra, 3500 МБ — размер кучи NEW.

Конфигурация JVM:
JVM _OPTS="$JVM _OPTS -XX :+UseParNewGC"
JVM _OPTS="$JVM _OPTS -XX :+UseConcMarkSweepGC"
JVM _OPTS="$JVM _OPTS -XX :+CMSParallelRemarkEnabled"
JVM _OPTS="$JVM _OPTS -XX :SurvivorRatio=1000"
JVM _OPTS="$JVM _OPTS -XX :MaxTenuringThreshold=0"
JVM _OPTS="$JVM _OPTS -XX :CMSInitiatingOccupancyFraction=40"
JVM _OPTS="$JVM _OPTS -XX :+UseCMSInitiatingOccupancyOnly -XX :+UseCompressedOops"



Статистика результатов от сообщества OpsCenter 2.0:

Запросы на чтение от 208 до 240 в секунду
Запросы на запись от 18 до 28 в секунду
Загрузка ОС от 24,5 до 25,85
Задержка запроса на запись от 127 до 160 мкс
Задержка запроса на чтение от 82202 до 94612 микросекунд
ОС отправляет сетевой трафик 44646 КБ в среднем в секунду
Полученный сетевой трафик ОС 4338 КБ в среднем в секунду
Размер очереди диска ОС: от 13 до 15 запросов
Ожидание запросов на чтение с 25 по 32

Задержка диска ОС от 48 до 56 мс
Скорость чтения с диска ОС 4,6 МБ в секунду
Дисковые операции чтения 420 операций чтения в секунду

IOWait 80 % CPU avg

Бездействие 13 % ЦП в среднем

Rowcache отключен.


Семейство колонн
Один из семейств столбцов, из которого я только читаю, создается через интерфейс командной строки.
create column family XColFam 
with column_type='Standard'  
and  comparator = CompositeType(BytesType,IntegerType)';"

Семейство столбцов Размер SSTable = 7,10 ГБ, количество SSTable = 2

XColFamсемейство колонок имеет номер 59499904. из оцененных ключей строк (большинство из них являются литералами utf8 с различной длиной, оцениваемой с помощью mx4jtools )со столбцами, подобными тонким по своей природе, со значением 0 байтов..... сейчас.

Большинство строк должно иметь очень небольшое количество столбцов, возможно, от 1 до 10, поэтому примерно с 20-30 байтами 1-го компонента имени столбца и 2-го из 8 байтов целого числа.... 2-й компонент составного столбца является динамическим, может повторяться но вероятность мала...... 1-й компонент повторяется в разновидностях, но количество столбцов в строках может быть другим.

Я попытался SnappyCompressionсжать семейство столбцов, но размер не изменился.

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

Я думаю, что сейчас он работает плохо, потому что обрабатывает слишком мало запросов в минуту. Раньше это работало лучше, когда размер семейства столбцов был не таким большим. Это было около 3-4 ГБ.

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

Я также пытался настроить некоторые GC и память, потому что до этого у меня было много использования GC и CPU. Когда размер данных был меньше и в форме волны было очень мало iowait.


Как увеличить производительность Cassandra. Ваши предложения будут оценены.
6
задан Crowie 28 August 2013 в 09:57
поделиться