SlideShare a Scribd company logo
Будни тестирования Cassandr-ы
Михаил Епихин
Танкиcт
Будни
тестирования
Cassandra
Введение
Что такое Cassandra?
Зачем она нужна?
4
Use Case
• Read & Write
– Раздельные тесты
– Смешанные тесты
5
Use Case
• Read & Write
– Раздельные тесты
– Смешанные тесты
• Size & Types
– Различные размеры блобов
– Text / Binary
6
Use Case
• Read & Write
– Раздельные тесты
– Смешанные тесты
• Size & Types
– Различные размеры блобов
– Text / Binary
• Replication Factor & Consistency Level
7
Инструментарий
• YCSB
8
Инструментарий
• YCSB
• cassandra-stress
9
Инструментарий
• YCSB
• cassandra-stress
• Iago
10
Инструментарий
• YCSB
• cassandra-stress
• Iago
• Apache JMeter
11
Инструментарий
• YCSB
• cassandra-stress
• Iago
• Apache JMeter + Netflix plugins
12
Инструментарий
• YCSB
• cassandra-stress
• Iago
• Apache JMeter + Netflix plugins
JAVA
13
Apache JMeter + Netflix plugins
• Гибкость инструмента
– scenario-based
– hit-based
14
Apache JMeter + Netflix plugins
• Гибкость инструмента
– scenario-based
– hit-based
• Простота и открытость инструмента
15
Apache JMeter + Netflix plugins
• Гибкость инструмента
– scenario-based
– hit-based
• Простота и открытость инструмента
• Опыт
16
Apache JMeter + Netflix plugins
• Гибкость инструмента
– scenario-based
– hit-based
• Простота и открытость инструмента
• Опыт
• Интеграция
– yandex-tank
– Лунапарк
Минимальный кластер
CPU E5-2660 x 2
RAM 128Gb
HDD (7200rpm) x 4
NET 1Gbit/s
18
Use Case
• Write
• 1M files text 1kb data
• Snappy
• Consistency Level 3
• Replication Factor 3
19
Пристреливаемся
Длинный текст
20
Пристреливаемся
Длинный текст
>6000 RPS
21
fail :(
Длинный текст
200 RPS
22
HDD RAID10 >200 IOPS
23
${__FileToString()}
24
/dev/shm & tmpfs
25
HDD → tmpfs
26
HDD → tmpfs
16000RPS
27
Синтетический тест (tmpfs)
${__FileToString(/tmp/shm/test)}
28
Производительность ${__FileToString}
29
Производительность ${__FileToString}
~16000RPS
30
Кешируем прочитанное!
${__ReadNCache()}
Concurrent LRU Cache
https://github.com/sch1z0phren1a/jmeter-
readncache
31
Синтетический тест (java heap)
${__ReadNCache(/tmp/shm/test)}
32
tmpfs vs java heap
33
tmpfs vs java heap
216KRPS
34
tmpfs → java heap
35
tmpfs → java heap
35000 RPS
36
tmpfs → java heap
35000 RPS
37
Что же делать?
38
Нестабильная подача нагрузки
39
Анализ работы генератора нагрузки
• Открытие файла
• Формирование запроса
• Отправка запроса
• Получение ответа
• Логирование результата
40
Анализ работы генератора нагрузки
• Открытие файла
• Формирование запроса
• Отправка запроса
• Получение ответа
• Логирование результата
41
Анализ работы генератора нагрузки
• Открытие файла
• Формирование запроса
• Отправка запроса
• Получение ответа
• Логирование результата
?
42
Чем занимаются потоки?
jstack -l $(pgrep java)
43
Thread 2391: (state = BLOCKED)
- java.io.PrintWriter.println(java.lang.String) @bci=6,
line=738 (Compiled frame)
-
org.apache.jmeter.reporters.ResultCollector.sampleOccurred(o
rg.apache.jmeter.samplers.SampleEvent) @bci=83, line=510
(Compiled frame)
Изучаем деятельность потоков
44
Анализ работы генератора нагрузки
• Открытие файла
• Формирование запроса
• Отправка запроса
• Получение ответа
• Логирование результата
45
writer = new PrintWriter(new OutputStreamWriter(new
BufferedOutputStream(new FileOutputStream(filename,
trimmed)),
SaveService.getFileEncoding("UTF-8")), true);
ResultCollector.sampleOccurred
46
writer = new PrintWriter(new OutputStreamWriter(new
BufferedOutputStream(new FileOutputStream(filename,
trimmed)),
SaveService.getFileEncoding("UTF-8")), true);
ResultCollector.sampleOccurred
47
Ускоряемся!
Чем плох autoFlush?
Что будет если заменим true на false?
48
Построчно или поблочно?
49
Построчно или поблочно?
98 vs 280 KRPS
50
Поблочно!
Apache JMeter 2.10
51
PrintWriter
Sampler Thread → PrintWriter
52
PrintWriter
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread → PrintWriter
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
53
PrintWriter
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread → PrintWriter
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
54
LF Queue
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread LF Queue
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
55
LF Queue
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread LF Queue
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
56
LF Queue
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread LF Queue
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Sampler Thread
Logging Thread
57
Еще быстрее! WritebackPrintWriter!
58
Еще быстрее! WritebackPrintWriter!
98 vs 216 vs 370 KRPS
59
Download WritebackPrintWriter
http://yadi.sk/d/98Rd05Sh4LA27
60
autoFlush=true → WritebackPrintWriter
61
autoFlush=true → WritebackPrintWriter
45000 RPS
62
Кооперативный режим!
63
Кооперативный режим!
64
Кооперативный режим!
~40000 RPS
65
Кооперативный режим!
~40000 RPS
66
Выводы
• Мониторинг (Hardware/Software)
67
Выводы
• Мониторинг (Hardware/Software)
• Синтетические тесты
68
Выводы
• Мониторинг (Hardware/Software)
• Синтетические тесты
• Деятельность потоков
69
Выводы
• Мониторинг (Hardware/Software)
• Синтетические тесты
• Деятельность потоков
• Корректность теста
Михаил Епихин
Танкист
+7 (915) 344 05 20
schizophrenia@yandex-team.ru
Спасибо
Вопросы

More Related Content

PDF
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
PPTX
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
PDF
Балансировка нагрузки и отказоустойчивость в Одноклассниках
PDF
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
PDF
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
PPTX
Тестируем производительность распределённых систем, Александр Киров (Parallels)
PPTX
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
PPTX
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Тестируем производительность распределённых систем, Александр Киров (Parallels)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...

What's hot (20)

PPTX
Денис Иванов
PDF
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
PPTX
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
PDF
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
PDF
RTB DSP на языке Go: укрощение buzzwords
PPT
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
PPTX
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
PPTX
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
PDF
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
PDF
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
PDF
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
PPTX
Как мы готовим MySQL / Николай Королёв (Badoo)
PDF
Всему своё время / Роман Ивлиев (Банки.ру)
PPTX
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
PPTX
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
PDF
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
PDF
Денис Иванов
PDF
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
PDF
My talk on LeoFS, Highload++ 2014
PPTX
No sql.mongodb scaling
Денис Иванов
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
RTB DSP на языке Go: укрощение buzzwords
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
Как мы готовим MySQL / Николай Королёв (Badoo)
Всему своё время / Роман Ивлиев (Банки.ру)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
Денис Иванов
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
My talk on LeoFS, Highload++ 2014
No sql.mongodb scaling
Ad

Viewers also liked (20)

PDF
Простой взгляд на автоматизацию или Как не изобретать велосипед
PPT
Советы для успешной автоматизации тестирования веб-приложений
PPTX
Автотесты на уровне API для Java-приложений
PPTX
QA Fes 2016. Роман Якимчук. Продвинутое тестирование состояний и переходов
PDF
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
PPTX
Реалистичное нагрузочное тестирование
PPTX
Проект Роботестер
PPTX
Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...
PDF
HtmlElements – естественное расширение PageObject
PPT
Использование игровых элементов и методов в процессе тестирования
PPTX
Нагрузочное тестирование web проектов
PPTX
User Interface Тестирование – все ли так просто?
PPTX
Automated UI Testing
PPT
Битва при юзабилити
PPTX
Перестаньте спрашивать «КОГДА?» Или как перестать закапывать свои проекты в д...
PPTX
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
PPT
Правила роста команды тестирования – мифы и реальность
PDF
Kiss PageObjects [01-2017]
PDF
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
PDF
Грабли автоматизации. Учимся на чужих ошибках
Простой взгляд на автоматизацию или Как не изобретать велосипед
Советы для успешной автоматизации тестирования веб-приложений
Автотесты на уровне API для Java-приложений
QA Fes 2016. Роман Якимчук. Продвинутое тестирование состояний и переходов
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
Реалистичное нагрузочное тестирование
Проект Роботестер
Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...
HtmlElements – естественное расширение PageObject
Использование игровых элементов и методов в процессе тестирования
Нагрузочное тестирование web проектов
User Interface Тестирование – все ли так просто?
Automated UI Testing
Битва при юзабилити
Перестаньте спрашивать «КОГДА?» Или как перестать закапывать свои проекты в д...
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
Правила роста команды тестирования – мифы и реальность
Kiss PageObjects [01-2017]
Автоматизация функционального тестирования REST API: секреты, тонкости и подв...
Грабли автоматизации. Учимся на чужих ошибках
Ad

Similar to Будни тестирования Cassandr-ы (10)

PPT
Monitoring and Load testing
PPTX
Нагрузочное тестирование JMeter Кожухов
PPTX
Jmeter
PDF
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
PPTX
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
PPT
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
PDF
Влад Селиверстов – Веб-сервер Phantom
PDF
Там, где Rails не справляются
PDF
Веб-сервер Phantom
PDF
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
Monitoring and Load testing
Нагрузочное тестирование JMeter Кожухов
Jmeter
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Влад Селиверстов – Веб-сервер Phantom
Там, где Rails не справляются
Веб-сервер Phantom
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения

More from SQALab (20)

PDF
Готовим стажировку
PPTX
Куда приводят мечты? или Искусство развития тестировщика
PPT
Оптимизация Selenium тестов и ускорение их поддержки
PPT
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
PPTX
Continuous performance testing
PDF
Конфиги вместо костылей. Pytestconfig и зачем он нужен
PPT
Команда чемпионов в ИТ стихии
PPTX
API. Серебряная пуля в магазине советов
PPTX
Добиваемся эффективности каждого из 9000+ UI-тестов
PPT
Делаем автоматизацию проектных KPIs
PDF
Вредные привычки в тест-менеджменте
PPTX
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
PPTX
Стили лидерства и тестирование
PPT
"Давайте не будем про качество"
PDF
Apache.JMeter для .NET-проектов
PPTX
Тестирование геолокационных систем
PPTX
Лидер или босс? Вот в чем вопрос
PPTX
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
PPTX
Истинная сила тестировщика - информация
Готовим стажировку
Куда приводят мечты? или Искусство развития тестировщика
Оптимизация Selenium тестов и ускорение их поддержки
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Continuous performance testing
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Команда чемпионов в ИТ стихии
API. Серебряная пуля в магазине советов
Добиваемся эффективности каждого из 9000+ UI-тестов
Делаем автоматизацию проектных KPIs
Вредные привычки в тест-менеджменте
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Стили лидерства и тестирование
"Давайте не будем про качество"
Apache.JMeter для .NET-проектов
Тестирование геолокационных систем
Лидер или босс? Вот в чем вопрос
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
Истинная сила тестировщика - информация

Будни тестирования Cassandr-ы