一键获取测试脚本,轻松验证“TSBS 时序数据库性能基准测试报告”
Posted 涛思数据TDengine
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一键获取测试脚本,轻松验证“TSBS 时序数据库性能基准测试报告”相关的知识,希望对你有一定的参考价值。
基于 TDengine 3.0 TSBS 基准测试报告,此前我们已经输出了系列文——为什么选择 TSBS 作为测试平台、写入性能对比、查询性能对比,分别就 TSBS 及测试环境、写入性能及开销、查询性能及开销进行了相关解读。在本篇文章中,我们将为想要验证本报告测试结果的小伙伴,分享进行报告测试复现的详细步骤。
数据建模
在 TSBS 框架中, TimescaleDB 和 InfluxDB 会自动创建相应的数据模型并生成对应格式的数据。本文不再赘述其具体的数据建模方式,只介绍 TDengine 的数据建模策略。
TDengine 一个重要的创新是其独特的数据模型——为每个设备创建独立的数据表(子表),并通过超级表(Super Table)在逻辑上和语义上对同一采集类型的设备进行统一管理。针对 DevOps 场景的数据内容,我们为每个设备 (这里是 CPU)创建了一个表,用以存储该表的时序数据。我们在 TDengine 中使用 hostname 作为子表的名称(因为hostname 可以作为每个设备的标识 ID),并使用如下的语句创建名为 CPU 的超级表,包含 10 个测量值和 10 个标签。
create stable cpu (ts timestamp,usage_user bigint,usage_system bigint,usage_idle bigint,usage_nice bigint,usage_iowait bigint,usage_irq bigint,usage_softirq bigint,usage_steal bigint,usage_guest bigint,usage_guest_nice bigint) tags (hostname varchar(30), region varchar(30),datacenter varchar(30),rack varchar(30),os varchar(30),arch varchar(30),team varchar(30),service varchar(30),service_version varchar(30),service_environment varchar(30))
然后 ,我们使用如下语句创建名为 host_0 的子表:
create table host_0 using cpu (hostname,region,datacenter,rack,os,arch,team,service,service_version,service_environment) tags (\'host_0\',\'eu-central-1\',\'eu-central-1a\',\'6\',\'Ubuntu15.10\',\'x86\',\'SF\',\'19\',\'1\',\'test\')
上述语句创建了一个子表。由此可知,对于 100 个设备(CPU)的场景 一,我们将会建立 100 个子表。对于 4000 个设备的场景二,系统中将会建立 4000 个子表用以存储各自对应的数据 。
软件版本和配置
本报告仅仅比较 TDengine ( Time Series Database )、InfluxDB 与 TimeScaleDB, 下面对使用的版本和配置做出说明。
TDengine
我们直接采用 TDengine Ver3.0,从 GitHub 克隆 TDengine 代码编译版本作为性能对比的版本。
gitinfo: c90e2aa791ceb62542f6ecffe7bd715165f181e8
在服务器上编译安装运行。
cmake .. -DDISABLE_ASSERT=true -DSIMD_SUPPORT=true -DCMAKE_BUILD_TYPE=Release -DBUILD_TOOLS=false make -j && make install
在 TDengine 的配置文件中设置了四个涉及查询的配置参数。
-
numOfVnodeFetchThreads 4 queryRspPolicy 1 compressMsgSize 128000 SIMD-builtins 1
参数设置解读:
- numOfVnodeFetchThreads 设置了 Vnode 的 Fetch 线程数量为 4 个,
- queryRspPolicy 用来打开 query response 快速返回机制
- compressMsgSize 的作用是自动压缩 TDengine 在传输层上大于 128,000 bytes 的消息
- 如果 CPU 支持,SIMD-builtins 可以启用内置的 FMA/AVX/AVX2 硬件加速
如上所述,TDengine 建库默认创建 6 个 vnodes,即创建的表会按照表名随机分配到 6 个虚拟节点(virtual node, VNode) 中。打开 LRU 缓存,设置为 last_row 缓存模式。对于场景一和场景二,stt_trigger 设置为 1,此时 TDengine 会准备一个 Sorted Time-series Table (STT) 文件,当单表写入量小于 minimum rows 时,数据会直接保存在 STT 文件中,当 STT 文件中无法容纳新数据时,系统就会将 STT 中的数据整理后再写入到数据文件中。对于其他的场景(场景三、四、五),stt_trigger 设置为 8,即允许最多生成 8 个 STT 文件。针对表较多的场景,需要适度增加 STT 的值,以此来获得更好的写入性能。
TimescaleDB
为确保结果具有可比性,我们选用 TimescaleDB 版本 version 2.6.0。为获得较好的性能,TimescaleDB 需要针对不同的场景设置不同的 Chunk 参数,不同场景下参数的设置如下表所示。
上述参数的设置,充分参考了《TimescaleDB vs. InfluxDB》(如下链接) 中推荐的配置参数设置,以确保能够最大化写入性能指标。
TimescaleDB vs. InfluxDB: Purpose Built Differently for Time-Series Data. https://www.timescale.com/blog/timescaledb-vs-influxdb-for-time-series-data-timescale-influx-sql-nosql-36489299877/
InfluxDB
我们选择了 InfluxDB version 1.8.10。这里没有使用 InfluxDB 最新的 2.x 版本是因为 TSBS 没有对其进行适配,所以选用了 InfluxDB 能够运行 TSBS 框架的最新版本。同样,我们采用《TimescaleDB vs. InfluxDB》中推荐的方式配置 InfluxDB,将缓冲区配置为 80G,以便 1000W 设备写入时能够顺利进行,同时开启 Time Series Index(TSI)。配置系统在系统插入数据完成 30s 后开始数据压缩。
-
cache-max-memory-size = "80g" max-values-per-tag = 0 index-version = "tsi1" compact-full-write-cold-duration = "30s"
测试步骤
硬件准备
为达到与 TimescaleDB vs. InfluxDB 对比报告中的环境高度接近,我们使用亚马逊 AWS 的 EC2 提供的 r4.8xlarge 类型实例作为基础运行平台,包括 1 台服务器、1 台客户端共两个节点构成的环境。客户端与服务器硬件配置完全相同,客户端与服务器使用 10 Gbps 网络连接。配置简表如下:
服务器环境准备
为运行测试脚本,服务器 OS 需要是 ubuntu20 以上的系统。AWS EC2 的服务器系统信息如下:
- OS: Linux tv5931 5.15.0-1028-aws #32~20.04.1-Ubuntu SMP Mon Jan 9 18:02:08 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
- Gcc:gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04)
- 基础环境,版本信息为:Go1.16.9 , python3.8 , pip20.0.2 (无需手动安装,测试脚本将自动安装)
- 编译依赖:gcc , cmake, build-essential, git, libssl-dev (无需手动安装,测试脚本将自动安装)
开始前请做两个配置:
- client 和 server 配置 ssh 访问免密,以便脚本可不暴露密码,可参考文档:免密配置(https://blog.csdn.net/qq_38154295/article/details/121582534)。
- 保证 client 和 server 之间所有端口开放。
获取测试脚本
为便于重复测试,隐藏繁琐的下载、安装、配置、启动、汇总结果等细节,整个 TSBS 的测试过程被封装成一个测试脚本。重复本测试报告,需要先下载该测试脚本,脚本暂支持 ubuntu20 以上的系统。以下操作要求具有 root 权限。
- 在客户端机器,进入测试目录拉取代码,默认进入 /usr/local/src/ 目录:
-
cd /usr/local/src/ && apt install git && git clone https://github.com/taosdata/tsbs.git && cd tsbs/scripts/tsdbComp
2. 修改配置文件 test.ini 中服务端和客户端的 IP 地址(这里配置 AWS 的私网地址即可)和 hostname,如果服务器未配置免密,还需要配置服务器端的 root 密码:
-
clientIP="192.168.0.203" #client ip clientHost="trd03" #client hostname serverIP="192.168.0.204" #server ip serverHost="trd04" #server hostname serverPass="taosdata123" #server root password
一键执行对比测试
执行以下命令:
-
nohup bash tsdbComparison.sh > test.log &
测试脚本将自动安装 TDengine、InfluxDB、TimeScaleDB 等软件,并自动运行各种对比测试项。在目前的硬件配置下,整个测试跑完需要大约一天半的时间。测试结束后,将自动生成 CSV 格式的对比测试报告,并存放在客户端的 /data2 目录。
写在最后
阅读完毕,你一定更加深入地了解了 TDengine 的数据建模、三大数据库测试版本和配置,以及如何运用测试脚本进行一键复现。如果有小伙伴想要验证 TDengine 的报告结果,欢迎按照上述步骤进行操作,检验测试结果,有任何问题都欢迎大家和我们及时沟通。现在添加小T vx:tdengine1,可以邀请你加入 TDengine 用户交流群,和更多志同道合的开发者一起聊技术、聊实战。
如何轻松建站?站点一键部署搭建(详细教程)
越来越多的人选择个人建站,个人站长虽然门槛很低,但是有些朋友觉得Linux服务器各种复杂的命令脚本让自己没法搭建环境。今天就给大家推荐一款使用方便、功能强大的快速建站工具——云帮手,支持 Linux 与 Windows 系统,可一键配置搭建环境、部署网站、数据库、FTP等,帮您大大提升建站效率。一键源码部署,快速搭建网站
云帮手自带一键源码部署功能,可一键部署各种程序,操作极为简单。今天我们就以快速搭建 WordPress 博客网站为例进行演示。
注:WordPress 是一个以 PHP 和 MySQL 为平台的自由开源的博客软件和内容管理系统。WordPress 具有插件架构和模板系统,是目前因特网上最流行的博客系统,甚至是很多知名的网站官网均是使用 WordPress 进行搭建。
1、登陆云帮手管理面板进入站点管理页,点击源码部署,在这里我们可以一键快速部署包括 WordPress 在内的诸多 CMS 、论坛等
2、如果一键部署系统所需PHP版本不符,可以切换至环境管理中安装相应的PHP版本
3、在部署站点页输入自己的站点名称和绑定域名,点击下一步 ;数据库和FTP页面可直接进入下一步
4、耐心等待片刻 WordPress源码就会部署完成,记录数据库名、账户、密码
5、在浏览器内输入刚才的域名进行访问,此时可以看到 WordPress 后台的配置界面,点击现在就开始
6、将步骤4内创建好的数据库信息复制粘贴下来,然后点击提交 ,进入最后的配置界面点击进行安装
7、此时进入站点配置界面,输入站点标题、用户名、密码、邮箱,然后点击安装WordPress
8、等待几秒后 WordPress 就已经安装完成,点击登陆按钮进入 WordPress 的后台进行页面设置
9、最后输入域名访问,就可以正常访问看到网站首页了
手动上传自己的源码搭建网站
由于一键部署功能支持的程序终究有限,接下来还会说到如何手动上传自己的源码搭建网站。
1、登陆云帮手,打开站点管理,点击“创建新站点”,在弹出的站点信息页面输入站点名称和域名
2、在刚创建好的站点后方点击浏览目录进入相应目录
3、勾选目录下的全部文件并删除
4、然后点击上传按钮,将源码文件上传
5、如果你的域名已经完成了解析,源码上传后直接输入网站域名就可以正常访问了
云帮手快速建站,集合站点管理、数据库管理和FTP管理三大功能,应该满足你的建站需求了。
今天分享到这里,顺便分享一下云帮手下载地址: (点击官网下载)
以上是关于一键获取测试脚本,轻松验证“TSBS 时序数据库性能基准测试报告”的主要内容,如果未能解决你的问题,请参考以下文章