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

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

Операционная система: Linux - CentOS выпуск 5.4 (финальный)
Версия Кассандры: apache-cassandra-1.1.0
Версия Java: "1.6.0_14" Java (TM) SE Runtime Environment (сборка 1.6.0_14-b08) Java HotSpot(TM) 64-битная виртуальная машина сервера (сборка 14.0-b16, смешанный режим)

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

  • rpc_server_type: hsha
  • disk_access_mode: mmap
  • concurrent_reads: 64
  • concurrent_writes: 32

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


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

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

Конфигурация 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"



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

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

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

IOWait 80 % средняя загрузка процессора

В простое 13 % средняя загрузка процессора

Rowcache отключен.


Семья колонн
Один из семейств столбцов, из которого я только читаю, создан через CLI

create column family XColFam 
with column_type='Standard'  
and  comparator = CompositeType(BytesType,IntegerType)';"

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

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

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

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

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

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

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

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


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

2 ответа

Посмотрите, Cassandra является относительной зависимостью ввода / вывода. Экземпляры EEC имеют "недостаточный" дизайн ввода / вывода (виртуализация Xen). И мое первое рекомендация - использовать Cassandra на реальном оборудовании, где у вас есть контроль. Например, вы можете использовать SSD диск для CommitLog. Посмотрите на аппаратные предложения Кассандры.

Тем не менее, переключение на собственное оборудование является радикальным вариантом. Чтобы остаться с Amazon, попробуйте EBS

Amazon Elastic Block Store (EBS) предоставляет тома хранилищ на уровне блоков для использования с экземплярами Amazon EC2. Тома Amazon EBS подключены к сети и сохраняются независимо от срока действия экземпляра. Amazon EBS предоставляет высокодоступные, высоконадежные, предсказуемые тома хранения, которые можно подключить к работающему экземпляру Amazon EC2 и отобразить как устройство в этом экземпляре. Amazon EBS особенно подходит для приложений, которым требуется база данных, файловая система или доступ к хранилищу на уровне блоков.

Amazon EBS позволяет создавать тома хранения объемом от 1 ГБ до 1 ТБ, которые могут быть подключены как устройства экземплярами Amazon EC2. Несколько томов могут быть подключены к одному экземпляру. Amazon EBS позволяет вам при желании обеспечить определенный уровень производительности ввода-вывода, выбрав выделенный том IOPS. Это позволяет прогнозировать масштабирование до тысяч IOPS на экземпляр Amazon EC2.

Также ознакомьтесь с тестированием производительности Cassandra на EC2

Краткий ответ: Rache Cache и Key Cache.

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

Кэши строк - это кэш-память, которая полностью хранит часто читаемые строки в памяти. Пожалуйста, имейте в виду, что это может иметь нежелательный эффект, если вы распространяете данные.

Кэши ключей, как правило, больше подходят, поскольку они хранят только ключи разделов и их смещения на диске. Обычно это помогает пропустить поиск по Cassandra(нет необходимости использовать индексы разделов и сводки разделов).

Попробуйте включить кэш ключей с помощью пространства ключей и таблицы и проверьте свою производительность.

Другие вопросы по тегам