Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Apache Cassandra JMeter
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Mikhail Epikhin
April 26, 2013
Programming
400
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Apache Cassandra JMeter
SQA Days 2013
Mikhail Epikhin
April 26, 2013
Other Decks in Programming
See All in Programming
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
ジョジョの世界をXRで再現する
mofurune
0
160
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
0
1.2k
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
270
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
残高管理から台帳サービスへの進化
artoy
1
200
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
The Cost Of JavaScript in 2023
addyosmani
55
10k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
The SEO Collaboration Effect
kristinabergwall1
1
590
WCS-LA-2024
lcolladotor
0
890
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
RailsConf 2023
tenderlove
30
1.6k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
A Tale of Four Properties
chriscoyier
163
24k
Abbi's Birthday
coloredviolet
4
10k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Transcript
None
Михаил Епихин Танки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} ~16000 RPS
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 216 KRPS
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
[email protected]
Спасибо
Вопросы