天天看点

4、FlashTsDB时序数据库-性能测试

FlashTsDB时序数据库-性能测试

FLashDB基于开源模式开发,地址:https://github.com/amon1991/flashdb

1、测试环境

服务器类型 配置说明 数量 其他说明
Linux CPU:8core 2.30GHz 硬盘:200G 内存:16G 3 操作系统:Centos 应用程序:zk,hadoop,hbase,redis
Windows CPU:8core 硬盘:500G 内存:12G 1 FlashTsDB,测试客户端

网络环境:千兆网卡,网线,路由器

2、写入测试

测点数 时间跨度 数据密度 总点数(万) 插入时间(ms) 占用空间
1 1y 1min/point 52.56 2276 -
10 1y 1min/point 525.6 16055 1065MB
100 1y 1min/point 5256 147253 11.1GB
1000 1y 1min/point 52560 1597974 15.45GB

如上表所示,100点和1000点占用空间差距不大,原因在于100点的占用空间是写入后立即统计的,而1000点的占用空间是写入后一段时间后统计的,在这段时间中Hbase自动进行了一些数据压缩处理和磁盘释放动作。

另外,测试环境使用的是千兆网卡,网线,路由器等设备,进行写入测试时程序占用40%左右的网络带宽。为了保证写入的稳定性,FLashTsDB限制了的写入吞吐量指标,实际对写入性能有极端要求的场景下,尚有优化的空间。

3、查询测试

查询测试分为历史数据查询和实时数据查询,历史数据查询细分为真实数据查询和插值数据查询。测试使用单线程和多线程2种模式进行。

3.1 历史真实数据:单线程

测点数 时间跨度 并发数 总点数(万) 响应时间(ms)
50 1d 1 4.15 447
50 10d 1 41.5 1112
50 30d 1 124.5 2364

3.2 历史真实数据:多线程

测点数 时间跨度 并发数 总点数(万) 平均响应时间(ms) 总响应时间(ms)
50 1d 10 41.5 971 1336
50 1d 100 415 5862 10727
50 1d 1000 4150 51288 101187
50 10d 10 415 4311 6357
50 10d 100 4150 29512 55702
50 30d 10 1245 11452 17202
50 30d 50 6225 43710 81253

3.3 历史插值数据:单线程

测点数 时间跨度 并发数 总点数(万) 响应时间(ms)
50 1d 1 7.2 413
50 10d 1 72 1096
50 30d 1 216 2503

3.4 历史插值数据:多线程

测点数 时间跨度 并发数 总点数(万) 平均响应时间(ms) 总响应时间(ms)
50 1d 10 72 1025 1391
50 1d 100 720 5755 10614
50 1d 1000 7200 51695 102076
50 10d 10 720 4507 6495
50 10d 100 7200 30081 56450
50 30d 10 2160 11502 16694
50 30d 50 10800 49875 82904

对于50测点,30天,50线程并发查询(总返回点数10800万)的极端场景下,每个线程的平均响应时间为49.875s,且无失败用例,FlashTsDB的查询性能十分优异。

3.5 实时数据查询:单线程

测点数 并发数 响应时间(ms)
100 1 23
1000 1 118

3.6 实时数据查询:多线程

测点数 并发数 平均响应时间(ms) 总响应时间(ms)
100 10 96 100
100 100 530 576
100 1000 1158 1765
1000 10 575 580
1000 100 1633 1810
1000 1000 14431 16218

FlashTsDB的实时数据存储在Redis内存数据库中,实测结果性能较高,对于大部分的常用场景,可以实现秒级甚至毫秒级返回。