性能测试在大数据平台产品研发中的实践
如果无法正常显示,请先停止浏览器的去广告插件。
1.
2.
3. O1
大数据平台产品概述
O2
OLAP性能测试指标
O3
OLAP性能测试实践
O4
问题与展望
4. 大数据平台产品概述
5. 行业趋势
物联网市场不断增长
物联网数据包含多种类型
互联网
连接数量增长
零售
边缘设备
GSMA预计,2025年全球物联网连接数量将达246亿,中国占
比将达到30%
IoT设备
工业
物联网
数据量增长
IDC预计,2025年全球物联网生成的数据量将达到每年73.1ZB
数据中心
应用及服务规模增长
交通
GSMA预计,到2025年,物联网上层的平台、应用和服务带
城市
社区、楼宇、家庭
来的收入占比将高达物联网收入的67%,成为价值增速最快
的环节
5
6. 大数据平台产品
7. OLAP性能测试指标
8. OLTP vs OLAP
8
9. OLAP场景的关键特性
绝大多数是读请求
数据以相当大的批次(> 1000行)更新,而不是单行更新
已添加到数据库的数据不能修改
对于读取,从数据库中提取相当多的行,但只提取列的一小部分
宽表,即每个表包含着大量的列
查询相对较少 (查询数百次或更少/秒)
处理单个查询时需要高吞吐量(可达数十亿行/秒)
每个查询有一个大表。除了他以外,其他的都很小
查询结果明显小于源数据
10. 性能测试的定义及目标
性能测试Definition (from 维基百科)
performance testing is in general a testing practice performed
to determine how a system performs in terms of responsiveness
and stability under a particular workload.
性能测试目标
我们的性能价值
观:
用户场景
对比业界主流OLAP数据库的性能,为引擎选型提供技术支撑 正确性
评估核心数据引擎的性能对目标业务场景的适配能力 业务指标
为核心数据引擎的性能优化提供方向和数据支撑
资源指标
10
11. OLAP性能测试指标
数据插入性能指标:
行/秒 (rows/seconds)
吞吐量 (throughput)
数据查询性能指标:
查询响应时间 (Response Time)
每秒查询率 (QPS)
资源使用指标:
CPU
Memory
Disk I/O
Network I/O
存储性能指标:
存储压缩比
11
12. 性能测试实践
13. 时间序列场景
测试数据集:Time Series Benchmark Suite (TSBS)
https://github.com/timescale/tsbs
场景: TSBS DevOps CPU-Only:4000 device, 10秒采样一次,数据规模:10亿
测试数据生成:
tsbs_generate_data --use-case="cpu-only" --seed=123 --scale=4000 --timestamp-start="2021-05-01T00:00:00Z" --timestamp-end="2021-05-
04T00:00:00Z" --log-interval="10s" --format="clickhouse" | gzip > /tmp/clickhouse-data.gz
查询SQL生成:
FORMATS="clickhouse" SCALE=4000 SEED=123 TS_START="2021-05-01T00:00:00Z" TS_END="2021-05-04T00:00:01Z" QUERIES=100
QUERY_TYPES="single-groupby-1-1-1 single-groupby-1-1-12 single-groupby-1-8-1 single-groupby-5-1-1 single-groupby-5-1-12 single-groupby-5-
8-1 cpu-max-all-1 cpu-max-all-8 double-groupby-1 double-groupby-5 double-groupby-all high-cpu-all high-cpu-1 lastpoint groupby-orderby-limit"
BULK_DATA_DIR="/tmp/bulk_clickhouse_queries" scripts/generate_queries.sh
13
14. 时序指标数据写入性能
测试数据集:Time Series Benchmark Suite (TSBS)
Influx DB
Data Loader
Data Ingestion
TimeScale DB
写入数据为采用Time Series Benchmark
Suite (TSBS) 生成的时序数据,模拟4000台
设备,每10秒采样一次,1月的数据量,总
计10亿条数据,约53GB。
ClickHouse
“样本数据 - cpu”
DAE
"2021-04-26 02:59:50",7866,79,10,44,76,69,54,12,91,50,53
“样本数据 - tags”
"2021-05-27 09:54:46",1,"host_0","eu-central-1","eu-central-1a","6","Ubuntu15.10","x86","SF","19","1","test"
测试环境
数据写入场景
处理器 Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
32Cores
内存 192 GB
磁盘 7200 RPM 8T SATA * 22
网络 万兆网络
写入批量 每次写入10000行TSBS数据
写入worker数目 32 worker
单行数据平均size 56字节
15. 时序指标数据写入性能 (Cont.)
Demo
TSBS Data Ingestion Performance (rows/seconds, 32 workers)
1878805
2000000
- InfluxDB 的 15.5 倍
1500000
1000000
- TimeScaleDB 的 5.47 倍
636074
500000
0
插入性能对比:
17063
DorisDB
- 社区版 ClickHouse 的 1.85 倍
224550
InfluxDB
TimescaleDB
ClickHouse
16. 时序指标数据查询性能
查询数据集为采用Time Series Benchmark Suite (TSBS) 生成
的时序数据,模拟4000台设备,每10秒采样一次,1月的数
据量,总计10亿条数据,约53GB。
Influx DB
Query Client
Query Request
对比查询使用2张表:“cpu”表和“tags”表
TimeScale DB
ClickHouse
DAE
时序指标数据查询场景
测试环境
处理器
内存
Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz 32Cores 对比查询采用 Light Query是TSBS查询集合中非 192 GB TSBS的时序指 计算密集型查询,不含多个group 标的15个标准 by, join操作 single-groupby-5-1-12,single-groupby-5-8-1
Heavy Query是TSBS查询集合中计 double-groupby-1,double-groupby-5,double-
磁盘 7200 RPM 8T SATA * 22
网络 万兆网络
查询
算密集型查询,含多个group by,
join等操作
cpu-max-all-1,cpu-max-all-8,high-cpu-1,
single-groupby-1-1-1,single-groupby-1-1-12,
single-groupby-1-8-1,single-groupby-5-1-1,
groupby-all,groupby-orderby-limit,high-cpu-all
,lastpoint
17. 时序指标数据查询性能 (cont.)
Demo
TSBS Query Benchmark - Heavy Queries (1 worker, ms)
100000
80000
60000
40000
20000
0
查询性能对比:
78783
41760
30132
263 590 2240 3467 15399
804 960 3302
double-groupby-1 double-groupby-5
DAE
1442 1420 4870
1385 1292 152
double-groupby-all
ClickHouse
66.7%(4/6) 的 Heavy 查 询 , DAE 比 InfluxDB 和
groupby-orderby-limit
TimeScaleDB
InfluxDB
10259 8039 12248
high-cpu-all
TimeScaleDB快, 最 快可达30.15倍。 55.6%(5/9)的
1426 1443 174
lastpoint
8462
Light查询,DAE比InfluxDB和TimeScaleDB快或者持
平,最快可达4倍
18. 日志分析场景
测试数据
某安全产品集群
数据规模 某安全产品1周(7天)的数据量
数据量 18亿条记录, 原始数据空间占用 4.007 TB
“样本数据:1000+ 字段”
ElastiscSearch
Query Client
Query Request
"null_n_a","null_n_a","null_n_a",-1,-1,-
1,”xxxxxxx(Alert)","::10.16.195.4","info.lenovo.com.cn","null_n_a","::43.255.226.106","null_n_a",80,"null_n_a","null_n_a",”xxxx告警
","/MA4KYFIR001b","null_n_a","null_n_a","null_n_a","356780381453156352","2021-02-01 00:00:40.000","null_n_a",-1,-
1,"null_n_a","null_n_a",”xxx_alert_V2.0.6.20",-1,"null_n_a","null_n_a",-1,"::10.18.127.153",-8564,-
1,"null_n_a","null_n_a",”XXXX","null_n_a","null_n_a",-1, ……, "2021-02-01 00:00:40.000","2021-03-18 16:40:40.000"
日志分析查询场景
DAE集群
对比查询采用
DAE
BI报表查询
某安全产品内
部测试环境的
查询分布构造
测试环境
处理器 Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz 32 Cores
内存 64 GB
磁盘 10 T SATA
网络 万兆网络
HQ Lite查询
19. 日志分析场景 (Cont.)
Demo
查询性能对比:
BI Query查询中(Cold Cache),DAE
85.33%(64/75)的查询比ES快,
70.67%(53/75)的查询比ES快1倍,
49.33%(37/75)的查询比ES快2倍,
22.67%(17/75)的查询比ES快5倍
20. 决策分析场景
测试数据集:Star Schema Benchmark (SSB)
场景: 商业决策分析,Scale Factor:100, 数据规模:10亿 (600037902)
测试数据生成:
$ git clone git@github.com:vadimtk/ssb-dbgen.git
$ cd ssb-dbgen
$ make
$ ./dbgen -s 100 -T a
20
21. 决策分析场景
查询性能对比:
- SSB宽表查询性能对比,StarRocks比ClickHouse占优,但基本在同一个量级,13 SSB个查询中,StarRocks有7个查询较CK快。所有的查
询都在1秒以内
- 多表Join查询,StarRocks所有的SSB查询都有较大的性能优势
22. 性能监控
监控工具:node exporter + Prometheus + grafana
23. 问题与展望
24. 日志分析性能测试 (DAE vs ES)
• 预期结果:DAE 优于ES
• 实际结果:ES优于DAE
25. 日志分析性能测试 (DAE vs ES)
• 观察一:
• ES大量使用内存,有Query Cache, Request Cache, Data Cache, Index
Cache, DAE使用的内存空间较少
• 更符合业务场景的查询测试方案:
• 查询中伴随着数据的插入
• 对比首次查询(Cold Cache)的Query Response Time
• Action:
• 为ClickHouse查询添加缓存功能
26. 日志分析性能测试 (DAE vs ES)
• 原因二:
• DAE未创建合适的索引
• 解决方案:
• 根据SQL中的filter建立合理的索引
27. 日志分析性能测试 (DAE vs ES)
• 原因三
• DAE SQL未优化
• 解决方案
• 用count(1)代替count(id)
• 用prewhere代替where
28. 日志分析性能测试 (DAE vs ES)
• 原因四
• DAE分布式查询bug: 分布式查询的查询计划不正确
29. 时序指标数据写入性能测试
TSBS
问题:
data generation data generation
.gz/txt csv
data ingestion Memory
data query data ingestion
• TSBS对每种数据库的源数据要单独生成,格式和内容有差异
• TSBS不支持TDengine、MatrixDB
• 用TSBS原生的写入程序初步测试ClickHouse的写入性能达不到期
望的写入性能
data query
30. 性能问题排查Tips
Your best friend:ClickHouse Query Log
Enable ClickHouse Query Log
Clickhouse-client –-send_logs_level=trace -m
30
31. 性能问题排查Tips
View ClickHouse Query Log
sudo less /var/log/clickhouse-server/clickhouse-server.log
Quick Identify related Query Log
grep <query_id> from clickhouse-server.log
32. Others
开始性能测试之前,明确业务的性能需求以及场景
小规模充分验证,保证方法正确后,再上规模
测试数据交叉验证, 找到性能瓶颈在哪里
详细记录每一次性能测试的配置及指标
性能指标监控很重要
保持好奇心,性能测试是一个不断学习的过程
33.
34. 360技术
THANKS
360质量效能
35.