基准测试工具之你不知道的两三事 | 12. 单机测试与集群测试有什么不同
前面的文章中我们已经讨论了怎样验证正确性、比较接口和寻找合理的并发区间。接下来把数据库从单机换成集群是不是只要增加节点再把客户端数乘几倍就可以了并不是。单机测试主要观察一台服务器上的 CPU、内存、磁盘和数据库执行路径集群测试还会引入网络、请求路由、数据分片、副本写入和节点间负载均衡。此时测试结果不仅由数据库“单节点有多快”决定也取决于数据和请求是否真的分散到了多个节点。更容易混淆的是IoT Benchmark 配置中的“Benchmark 集群模式”指的是多个压测工具实例协同发压并不等于待测数据库已经部署成集群。1. 先分清两种“集群”概念被扩展的对象主要目的不能自动保证什么数据库集群数据库服务端节点扩展容量、吞吐、可用性或副本能力请求一定均匀、容量一定线性增长。Benchmark 多实例压测客户端进程或机器避免单个客户端成为瓶颈产生更大或更分散的压力数据库已经负载均衡、结果已经自动汇总。两者可以自由组合单个 Benchmark 实例测试单机数据库单个 Benchmark 实例测试数据库集群多个 Benchmark 实例测试数据库集群甚至多个实例共同测试一个单机数据库用来确认客户端是否曾是瓶颈。数据库集群路由与接入层压测侧Benchmark 0Benchmark 1Benchmark 2数据库访问入口节点 0节点 1节点 2图中左侧实例是否真的打到不同服务端节点取决于数据库驱动、访问入口和路由策略不能仅凭“启动了三个 Benchmark”推断。2. 单机测试和集群测试回答的问题不同单机测试适合建立基础能力边界在固定硬件、固定数据和固定负载下一个数据库实例的吞吐量、P99 和资源消耗处于什么范围。它更容易控制变量也更适合发现版本退化和接口差异。集群测试则要回答另一组问题增加节点后容量能否扩展请求和数据是否均衡网络与副本带来多少额外代价以及某个热点是否会让部分节点先达到瓶颈。测试问题更适合的部署需要额外观察的证据新版本的单节点写入路径是否退化单机单机 CPU、磁盘、内存、吞吐和尾延迟。三个节点能否承载更大的总负载集群每节点资源、路由分布、分片分布和总吞吐。增加节点能否降低同一负载下的延迟单机基线 集群对照固定总负载下的 P99 与集群内部开销。热门设备持续写入时是否出现热点集群设备到分片的映射、各节点请求量和磁盘写入量。节点异常是否影响连续服务独立的故障实验故障注入时间、失败窗口、恢复时间和数据正确性。因此“单机每秒处理多少点”和“集群每秒处理多少点”通常不能直接放在一起排名。前者是单实例能力后者混入了节点数、网络和分布策略。3. IoT Benchmark 的多实例模式做了什么在当前代码版本中多实例模式由以下两个参数控制# 所有参与实例都开启 BENCHMARK_CLUSTERtrue # 每个实例使用不同编号从 0 开始 BENCHMARK_INDEX0当BENCHMARK_CLUSTERtrue时工具会按下面的关系计算当前实例的首个设备编号FIRST_DEVICE_INDEX BENCHMARK_INDEX × DEVICE_NUMBER假设每个实例配置DEVICE_NUMBER1000设备区间会形成如下映射BENCHMARK_INDEX0设备 0—999BENCHMARK_INDEX1设备 1000—1999BENCHMARK_INDEX2设备 2000—2999这样做的核心作用是避免多个 Benchmark 实例默认生成相同设备名导致不同客户端向同一批设备和时间序列写入。这个偏移也会被 schema 和查询工作负载使用使每个实例围绕自己的设备区间工作。但这两个参数不会替你完成以下工作不会创建或启动数据库集群不会配置数据库的分片、副本和负载均衡不会检查各客户端机器的时钟是否一致不会自动判断所有实例是否同时开始、同时结束不会把多台机器上的结果自动解释成一个可信的集群结论。所以多实例模式解决的是设备编号隔离而完整的分布式压测仍需要额外的启动编排、监控和结果汇总。4. 集群测试不能只把客户端数乘倍数如果单个 Benchmark 实例已经把所在机器的 CPU 或网络跑满继续增加客户端线程可能只是在测试压测机。反过来如果直接启动多个实例却没有检查数据库节点分布也可能出现所有请求都经由同一入口、落到同一个热点节点的情况。一轮可靠的集群测试至少包含四层检查压测客户端是否有余量请求是否到达预期入口数据和请求是否分布到多个节点各节点资源与延迟是否均衡聚合吞吐与正确性是否满足目标层次需要检查什么常见异常客户端客户端 CPU、网络、GC、连接数和生成数据速度数据库还有余量但发压端已经到顶。接入与网络目标地址、连接分布、客户端到节点的网络时延所有连接集中到一个入口或跨区域链路。数据分布设备、时间分区、分片和副本的实际归属设备名不同但分片仍集中在少数节点。服务端每节点请求量、CPU、内存、磁盘与网络总体看似正常某个节点已成为热点。结果各实例成功点数、失败数、P99 与正确性证据汇总吞吐升高但部分实例持续失败。只有这几层证据能够互相对应才可以说测试覆盖了数据库集群而不是“几台客户端同时运行”。5. 两种常见的扩展性测试口径比较单机和集群时至少应区分两种实验。5.1 固定总负载观察集群额外开销与余量保持总设备数、总写入速率、操作比例和数据量不变只改变数据库部署方式。这个实验适合回答相同业务负载从单机迁移到集群后延迟、资源和稳定性如何变化。由于集群可能引入网络和副本开销总吞吐不一定自动提高但单节点资源压力可能下降并获得更多容量或可用性余量。5.2 随节点数增加负载观察扩展效率分别测试 1、2、3……个服务端节点并按预先约定增加总设备数或目标速率。每个规模下都要重新确认客户端不是瓶颈、数据分布均衡且正确性通过。可以用下面的比值辅助描述扩展情况扩展效率 N 节点稳定吞吐量 ÷N × 单节点稳定吞吐量它只是当前环境下的观察指标不是越接近 100% 就一定越好。副本数、网络拓扑、存储介质和一致性要求不同都会改变合理范围。真正的结论仍应同时包含 P99、失败数、每节点资源与正确性。6. 一份多实例配置示意假设使用三台压测机每台负责相同数量但不同编号的设备可以分别准备三份配置。除实例编号、客户端本机地址等必要差异外其余工作负载应保持一致。# 三台机器相同 BENCHMARK_CLUSTERtrue DEVICE_NUMBER1000 SENSOR_NUMBER10 OPERATION_PROPORTION1:0:0:0:0:0:0:0:0:0:0 # 三台机器分别设置 0、1、2 BENCHMARK_INDEX0运行前还应建立一张映射表实例BENCHMARK_INDEX设备区间数据库入口结果文件状态client-000—999待填待填待测client-111000—1999待填待填待测client-222000—2999待填待填待测表中的结果文件必须分别保留。汇总时先逐实例检查失败数和 P99再计算成功点数与总运行时间口径一致的聚合结果不能简单相加各自打印的point/s而忽略开始、结束时间差。7. 五个常见误区第一把BENCHMARK_CLUSTERtrue当作数据库集群开关。它只改变 Benchmark 的多实例设备编号逻辑。第二多个实例使用相同BENCHMARK_INDEX。这会造成设备区间重叠测试语义随之改变。第三只看集群总 CPU。总量会掩盖单节点热点应始终保留每节点数据。第四把节点数增加等同于性能线性增长。路由、网络、副本和分片都可能限制扩展效率。第五直接相加不同时间窗口的吞吐量。聚合结果必须基于统一的有效运行窗口和成功点数口径。8. 小结单机测试用于建立清晰、可控的基础能力集群测试则要额外验证客户端、网络、路由、分片、副本和节点均衡。IoT Benchmark 的BENCHMARK_CLUSTER与BENCHMARK_INDEX可以让多个压测实例使用不同设备区间但不会自动完成数据库集群部署、流量均衡和结果复盘。开始集群测试前可以用三个问题自查我扩展的是数据库节点、Benchmark 实例还是两者同时扩展数据与请求是否有证据表明确实分布到了多个节点聚合结论是否同时包含正确性、尾延迟、失败数和每节点资源把这三件事说清楚集群测试才不只是“机器更多了”。下一篇将讨论怎样保存一轮测试的配置、日志、结果和环境使异常能够被复盘、结论能够被重现。系列文章第一篇数据库基准测试工具是什么第二篇从一次时序数据库写入测试开始第三篇如何模拟线上写入负载第四篇如何读懂测试结果波动第五篇什么是读写混合负载第六篇如何模拟线上读写混合负载第七篇怎样做一场公平的性能对比第八篇怎样找到并发与批大小的合理区间第九篇如何模拟乱序写入第十篇不同写入接口该怎样比较第十一篇性能测试与正确性验证有什么区别

相关新闻

kableExtra社区贡献指南:如何为这个开源表格工具添加新功能

kableExtra社区贡献指南:如何为这个开源表格工具添加新功能

kableExtra社区贡献指南:如何为这个开源表格工具添加新功能 【免费下载链接】kableExtra Construct Complex Table with knitr::kable() pipe. 项目地址: https://gitcode.com/gh_mirrors/ka/kableExtra kableExtra是R语言中最受欢迎的表格美化包之一&…

2026/7/29 21:27:34 阅读更多 →
基准测试工具之你不知道的两三事 | 11. 性能测试与正确性验证有什么区别

基准测试工具之你不知道的两三事 | 11. 性能测试与正确性验证有什么区别

一轮基准测试结束后,我们通常最先看到的是吞吐量、平均延迟、P99 和失败数。如果吞吐足够高、失败数又是 0,能否直接说明测试通过? 不能。性能测试回答的是“系统处理得多快”,正确性验证回答的是“系统处理的结果是否符合预期”…

2026/7/28 21:08:19 阅读更多 →
快速上手node-jsonc-parser:10分钟学会JSONC解析与格式化

快速上手node-jsonc-parser:10分钟学会JSONC解析与格式化

快速上手node-jsonc-parser:10分钟学会JSONC解析与格式化 【免费下载链接】node-jsonc-parser Scanner and parser for JSON with comments. 项目地址: https://gitcode.com/gh_mirrors/no/node-jsonc-parser 想要处理带注释的JSON配置文件?node-…

2026/7/30 8:35:41 阅读更多 →

最新新闻

从零构建C++文本编辑器:Qt实战与核心架构解析

从零构建C++文本编辑器:Qt实战与核心架构解析

1. 项目概述:从零构建一个C文本编辑器 最近在整理一些代码片段和笔记,发现系统自带的记事本功能太简陋,而像VS Code、Sublime这类专业编辑器又过于庞大,启动慢,而且很多高级功能我根本用不上。于是萌生了一个想法&…

2026/7/30 13:42:30 阅读更多 →
【单片机毕业设计】基于 STM32 传感器数据采集与智能出水控制系统 基于 STM32 的饮水设备安全防护控制系统开发(012101)

【单片机毕业设计】基于 STM32 传感器数据采集与智能出水控制系统 基于 STM32 的饮水设备安全防护控制系统开发(012101)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/30 13:42:30 阅读更多 →
2026下半年五大网络监控软件全面评测

2026下半年五大网络监控软件全面评测

进入2026年下半年,企业IT基础设施的复杂度持续攀升,混合云、多分支机构组网、SD-WAN部署以及物联网设备接入,让网络监控从"锦上添花"的运维工具逐步演变为业务连续性的核心保障。面对市场上纷繁的选择,我们从功能覆盖、部署灵活性、…

2026/7/30 13:42:30 阅读更多 →
Elastic 作为创始成员加入 Open Secure AI Alliance,与 NVIDIA 及行业领导者共同推动 AI 安全与保障

Elastic 作为创始成员加入 Open Secure AI Alliance,与 NVIDIA 及行业领导者共同推动 AI 安全与保障

作者:来自 Elastic Brian BergholmRachael Wade Open Secure AI Alliance 致力于推动 AI 安全与保障,是一项旨在构建新工具、促进开放创新、共同进步和建立 AI 信任的行动。 摘要 Elastic 作为创始成员加入 Open Secure AI Alliance,与 NVIDI…

2026/7/30 13:42:30 阅读更多 →
ArkTS中的MVC、MVP、MVVM

ArkTS中的MVC、MVP、MVVM

在 ArkTS 和 ArkUI 开发中,一个页面通常包含三部分内容: 页面展示;用户交互;数据请求和业务处理。 如果所有代码都写在一个 Component 中,随着功能增加,组件会变得越来越臃肿。MVC、MVP 和 MVVM 的作用&…

2026/7/30 13:42:30 阅读更多 →
C++函数内static变量深度解析:存储期、初始化与线程安全

C++函数内static变量深度解析:存储期、初始化与线程安全

1. 项目概述:为什么函数里的static值得深究? 在C的日常开发中, static 关键字可能是我们最熟悉又最陌生的老朋友。说它熟悉,是因为但凡写过几天C,都见过它;说它陌生,是因为它身兼数职&#xf…

2026/7/30 13:41:30 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻