最新测试揭秘: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 高效处理大规模数据需求的关键因素。

目录
相关文章
|
26天前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
51 2
|
3月前
|
SQL 安全 Java
探索软件测试的多维策略:从单元到集成,再到性能与安全
在软件开发生命周期中,测试是不可或缺的一环。本文将深入探讨软件测试的多维策略,从单元测试、集成测试到性能测试和安全测试等各个层面进行剖析。我们将通过具体的统计数据和案例分析,揭示不同测试策略的优势和应用场景。文章旨在为读者提供一个全面的测试框架,帮助他们构建更稳定、高效和安全的系统。
85 2
|
21天前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
10天前
|
敏捷开发 安全 测试技术
软件测试的艺术:确保质量与性能的平衡之道
【9月更文挑战第24天】在软件开发的海洋中,测试是导航灯塔,指引着项目安全抵达质量的彼岸。本文将深入探讨软件测试的核心原则、方法论以及如何通过精心设计的测试策略来保障产品的可靠性和性能。我们将从测试的基础知识出发,逐步深入到高级测试技巧,最终展示如何通过实际案例来应用这些知识以确保软件的成功交付。
|
15天前
|
测试技术 Python
软件测试的艺术:确保质量与性能
【9月更文挑战第19天】在数字化时代,软件已成为我们生活的一部分。然而,随着软件复杂性的增加,如何确保其质量和性能成为了一个挑战。本文将探讨软件测试的重要性,介绍常见的测试类型和策略,并提供实用的代码示例来帮助读者更好地理解和应用这些测试方法。无论你是开发人员、测试工程师还是项目管理者,这篇文章都将为你提供有价值的见解和技巧。
|
29天前
|
存储 Java 关系型数据库
“代码界的魔法师:揭秘Micronaut框架下如何用测试驱动开发将简单图书管理系统变成性能怪兽!
【9月更文挑战第6天】Micronaut框架凭借其轻量级和高性能特性,在Java应用开发中备受青睐。本文通过一个图书管理系统的案例,介绍了在Micronaut下从单元测试到集成测试的全流程。首先,我们使用`@MicronautTest`注解编写了一个简单的`BookService`单元测试,验证添加图书功能;接着,通过集成测试验证了`BookService`与数据库的交互。整个过程展示了Micronaut强大的依赖注入和测试支持,使测试编写变得更加高效和简单。
51 4
|
2月前
|
消息中间件 Kafka 测试技术
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
|
2月前
|
监控 网络协议 安全
在Linux中,如何进行系统性能的峰值测试?
在Linux中,如何进行系统性能的峰值测试?
|
2月前
|
监控 Java 测试技术
实战派必看!Python性能测试中,JMeter与Locust如何助力性能调优
【8月更文挑战第6天】性能优化是软件开发的关键。本文介绍JMeter与Locust两款流行性能测试工具,演示如何用于Python应用的性能调优。JMeter可模拟大量用户并发访问,支持多种协议;Locust用Python编写,易于定制用户行为并模拟高并发。根据场景选择合适工具,确保应用在高负载下的稳定运行。
94 4
|
3月前
|
SQL 弹性计算 测试技术
实时数仓Hologres TPC-H及点查性能开箱测试
Hologres现在仍然是TPCH-30000榜单的全球第一,领先第二名高达23%,最新发布的2.2版本相比之前的1.x的版本性能大约提升100%。
下一篇
无影云桌面