性能概述
性能概述
时序数据库 CTSDB 由节点组成,单节点的规格和节点数量决定了 CTSDB 实例的处理能力。理论上:
CTSDB 实例读写并发性能 = (某节点的性能 * 节点数量)
因此,节点规格越高,节点数量越多,实例的读写能力越强,而单节点的性能主要跟 CPU 和内存配置相关。实例的具体性能随着单节点配置、节点数量和写入字段数量等而改变。
本文档给出的测试数据是在指定参数下的参考值,仅作为选型参考依据,实际情况需要业务真实的测试。
性能测试
测试工具
测试步骤
1. 建表
命令如下:
#建立 metric(注意这里 tags 里只有一个 host,但当写入的数据有新的字段时,这些字段将自动作为 tag,放入 tags 里面)curl -u {user}:{passwd} -XPUT {ctsdb_ip_port}/_metric/testa10?pretty -d '{"tags": {"http_code": "string"},"fields": {"count1":"long","count2":"long","count3":"long","count4":"long","count5":"long","count6":"long","count7":"long","count8":"long","count9":"long","count10":"long"},"time": {"name": "timestamp","format": "epoch_second"},"options": {"expire_day": -1,"refresh_interval": "10s","number_of_shards": 3,"number_of_replicas": 1,"rolling_period": -1}}'# 查询metriccurl {ctsdb_ip_port}/_metric/testa10?pretty# 删除metric(同时会删除对应的所有数据)curl -XDELETE {ctsdb_ip_port}/_metric/testa10
说明
其中 {ctsdb_ip_port} 为时序数据库 CTSDB 访问端口,{user} 和 {passwd} 分别为用户名和密码。
- db_url string实例的 vip 和 Vport (格式如 10.02.36.89:9200)- metric_name string需要写入的 metric 名称- data_num int一个客户端一次写入的记录数量- threads_nmb int写入并发数- counts int一个记录中 filed 的数量
运行脚本前请修改脚本第18行的 userpwd。
使用样例:
python testa.py 10.0.1.10:9200 testa10 4000 9 10
脚本输出:
分为两部分,params:选项参数,results:最终结果。
-------------- params --------------put_url http://10.0.1.10:9200/testa10/doc/_bulkdataNum: 4000threads_nmb: 9counts: 10-------------- results --------------start all threads 2018-12-25 20:10:24exit all threads 2018-12-25 20:10:24startTime: 1545739824.51endTime: 1545739824.55diffTime: 0.0414531230927wps: 158450.850363
说明
平均写入速率为 wps 字段输出的结果。
性能参考值
说明
并发线程数:9
写入字段数:10
单节点配置 | 节点数 | 写入能力 |
1核4GB内存 | 3 | 3万点/秒 - 5万点/秒 |
4核20GB内存 | 3 | 9万点/秒 - 12万点/秒 |
8核40GB内存 | 3 | 11万点/秒 - 15万点/秒 |