最新测试揭秘:TDengine 线性扩展能力能否满足你的性能需求?

简介: **摘要:**TDengine 的线性扩展能力通过CPU和磁盘测试得以验证。在CPU测试中,使用TDengine V3.3.0.0和taosBenchmark,随着CPU核数从4增至12,写入性能线性提升,每个CPU增加对应约50W条/秒的提升,保持CPU在瓶颈状态。磁盘IO测试中,使用低速机械盘,增加磁盘数量导致写入性能成比例增长,充分利用新增磁盘IO。测试结果表明,无论CPU还是磁盘扩展,TDengine都能有效利用资源,展示出出色的线性扩展能力。

软件扩展能力是软件架构设计中的一个关键要素,具有良好扩展能力的软件能够充分利用新增的硬件资源。当软件性能与硬件增加保持同步比例增长时,我们称这种现象为软件具有线性扩展能力。要实现这种线性扩展并不简单,它要求软件架构精心设计,能够最大化硬件性能的利用,同时减少内部资源消耗。

为了验证 TDengine 是否具备线性扩展能力,我们可以采取以下测试方法:首先识别出可能成为性能瓶颈的硬件资源,然后逐步增加这类资源,观察软件性能的变化。下面我们将从计算机资源中最常见的扩展 CPU 和磁盘两方面来验证 TDengine 的线性扩展能力。
TDengine CPU 线性扩展能力
测试目的: 验证在带宽、IO 及内存不是瓶颈,仅 CPU 是瓶颈的情况下,写入速度应与 CPU 核数成正比。
测试方法:
测试系统:使用 TDengine 官网发布的 docker 镜像,TDengine 版本为 V3.3.0.0
测试工具:taosBenchmark
表结构:TDegnine 官网智能电表结构
增加 CPU 核数方法: docker 绑定固定数量 CPU 技术
两阶段配置方法:
1 ~ 4 核 VGROUP 为 4 ,写入线程数为 4
5 ~ 12 核 VGROUP 为 12 ,写入线程数为 12
使用两阶段配置,让 CPU 始终保持在瓶颈状态
测试参数:
数据库: 1 个
超级表: 1 个
子表数:100 个
每子表行数: 100W
总数据量: 1 亿
测试结果:
表1.jpg

磁盘为 SSD,写入最高可达 :350M/秒,IO 充足
带宽:客户端服务器同一台机器,带宽可认为无限制
图1.png

数据解读:
在 4 核时 CPU 使用率降至 88%,若再增加 CPU 可能 CPU 不会再成为瓶颈,所以升级配置至 12 个 VGROUPS、12 写入线程,让 CPU 始终保持在瓶颈状态下
每增加一个 CPU,写入性能线性提升约 50W 左右,符合线程增长预期
磁盘 IO 基本与写入速度增长保持一致
测试结论: 与预期一致
TDengine IO 线性扩展能力
测试目的: 验证在 CPU、带宽及内存不是瓶颈,仅 IO 是瓶颈情况下,写入速度应与增加的磁盘个数成正比。
测试方法:
测试系统: Linux Ubuntu 20.4 操作系统
硬件配置: CPU 24 核, 64 GB 内存,挂三块普通 5400 转低速机械盘(选择性能普通的硬盘,有利于很快打满 IO,达到 IO 成为瓶颈的条件 )
TDengine: 版本 V3.3.0.0
测试工具:taosBenchmark
表结构:

表2.jpg

(行长度 32618 字节,使用大宽行,更易打满 IO)
增加磁盘方法: 使用同级挂载多块磁盘技术
测试参数:
数据库: 1 个 VGROUP 16
超级表: 1 个
子表数:100 个
每子表行数: 1W
总数据量: 100W
taosBenchmark :
写入线程数 = 16 个
写入方式 = stmt vgroup 绑定线程快速写入方法
测试结果:
表3.jpg

CPU: 24 核 CPU ,大部分为空闲,CPU 充足
带宽:客户端服务器同一台机器,带宽可认为无限制
Commit 线程数是数据落盘的线程数,负责直接写磁盘
磁盘挂载到 3 块后,需加大 Commit 线程数,才能打满 IO
图2.png

数据解读:
从数据上可看出,每增加一块磁盘,写入性能也会成比例增长,新增磁盘 IO 被充分使用。
测试结论: 与预期一致
总结
通过对 TDengine 服务器的 CPU 和磁盘资源进行扩展实验,我们验证了其对硬件资源的利用能力。实验结果表明,TDengine 展现出了显著的线性扩展能力,这证明了其具备优秀的架构设计和先进的设计理念。TDengine 能够有效地利用增加的硬件资源,这不仅提升了性能,也优化了资源的整体使用效率。这种能力是 TDengine 高效处理大规模数据需求的关键因素。

目录
相关文章
|
23天前
|
JavaScript 前端开发 安全
在众多的测试工具中,Cypress以其强大的端到端测试能力和与TypeScript的完美结合,成为了前端开发者的首选
【6月更文挑战第11天】Cypress结合TypeScript,打造前端测试新体验。TypeScript增强代码可读性和稳定性,Cypress提供强大端到端测试,二者结合提升测试准确性和可靠性。通过类型定义、自定义命令和断言,优化测试代码;Cypress模拟真实用户操作、时间旅行功能及内置调试工具,确保应用功能性能。推荐前端开发者使用TypeScript+Cypress进行端到端测试。
44 2
|
2月前
|
存储 监控 Cloud Native
如何通过持续测试和调整来提高OLAP系统的性能和可扩展性?
【5月更文挑战第14天】如何通过持续测试和调整来提高OLAP系统的性能和可扩展性?
34 2
|
14天前
|
SQL 安全 Java
探索软件测试的多维策略:从单元到集成,再到性能与安全
在软件开发过程中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的多维策略,包括单元测试、集成测试、性能测试和安全测试。我们将分析每种测试方法的优势和局限性,并讨论如何将这些策略整合到一个全面的测试计划中,以提高软件的可靠性和安全性。文章还将提供实用的例子和最佳实践,帮助读者更好地理解和应用这些测试技术。
|
2月前
|
消息中间件 监控 固态存储
性能工具之 Kafka 快速 BenchMark 测试示例
【5月更文挑战第24天】性能工具之 Kafka 快速 BenchMark 测试示例
70 1
性能工具之 Kafka 快速 BenchMark 测试示例
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
2024年5月大语言模型论文推荐:模型优化、缩放到推理、基准测试和增强性能
本文汇总了2024年5月发布的七篇重要大语言模型论文,涉及模型优化、缩放、推理及性能增强。
59 2
|
22天前
|
JavaScript 前端开发 安全
Cypress因其强大的端到端测试能力备受青睐,尤其与TypeScript结合,提升了测试的规范性和准确性。
【6月更文挑战第12天】前端开发日益复杂,测试成为保障代码质量和稳定性的关键。Cypress因其强大的端到端测试能力备受青睐,尤其与TypeScript结合,提升了测试的规范性和准确性。TypeScript使Cypress测试代码更易读、维护,通过类型定义、自定义命令和断言增强测试可靠性。Cypress能模拟真实用户操作,支持时间旅行和高效调试,全面测试前端应用功能。因此,TypeScript+Cypress是前端端到端测试的理想选择。
56 2
|
22天前
|
编译器 测试技术 Linux
技术洞察:循环语句细微差异下的性能探索(测试while(u--);和while(u)u--;的区别)
该文探讨了两种循环语句(`while(u--);` vs. `while(u) u--;`)在性能上的微妙差异。通过实验发现,后者比前者平均执行速度快约20%,原因在于循环条件检查的顺序影响了指令数量。尽管差异可能在多数情况下不显著,但在性能关键的代码中,选择合适的循环结构能优化执行效率。建议开发者在编写循环时考虑编译器优化和效率。未来研究可扩展到不同编译器、优化级别及硬件架构的影响。
|
22天前
|
算法 Linux 测试技术
Linux编程:测试-高效内存复制与随机数生成的性能
该文探讨了软件工程中的性能优化,重点关注内存复制和随机数生成。文章通过测试指出,`g_memmove`在内存复制中表现出显著优势,比简单for循环快约32倍。在随机数生成方面,`GRand`库在1000万次循环中的效率超过传统`rand()`。文中提供了测试代码和Makefile,建议在性能关键场景中使用`memcpy`、`g_memmove`以及高效的随机数生成库。
|
3天前
|
缓存 监控 Java
如何测试Java应用的性能?
如何测试Java应用的性能?
|
2月前
|
NoSQL 测试技术 MongoDB
【MongoDB 专栏】MongoDB 的性能基准测试与评估
【5月更文挑战第11天】MongoDB的性能基准测试对于优化至关重要,涉及数据读写速度、查询响应时间及吞吐量等指标。测试应明确目标和范围,选择合适的工具,考虑数据模型、索引、查询优化和系统配置等因素。性能评估需关注读写吞吐量、响应时间和资源利用率。通过多次测试、逐步增加负载和对比其他系统,识别性能瓶颈并持续优化。随着技术发展,测试方法和工具将持续创新,以应对复杂性能挑战。
【MongoDB 专栏】MongoDB 的性能基准测试与评估