Dapr Workflow 性能测试报告解读:v1.16.3 工作流压测图表手册

发布时间:2026/9/13 0:45:53
Dapr Workflow 性能测试报告解读:v1.16.3 工作流压测图表手册 Dapr Workflow 性能测试报告解读v1.16.3 工作流压测图表手册【免费下载链接】daprDapr is a portable runtime for building distributed applications across cloud and edge, combining event-driven architecture with workflow orchestration.项目地址: https://gitcode.com/GitHub_Trending/da/dapr本指南以 Dapr 仓库中tests/perf/report/charts/v1.16.3/workflows/下的自动生成报告为核心讲解 Dapr Workflow工作流性能测试的五类典型压测场景、图表目录的生成机制与每一类图表的读法。读完本文你将掌握如何根据测试命名如T_110_440反推压测负载模型如何通过 summary、duration_breakdown、throughput 等图表快速定位工作流执行延迟、吞吐与资源表现以及这套 k6 图表管线背后的源码依据。一、报告是什么自动生成的性能图表索引tests/perf/report/charts/v1.16.3/workflows/README.md是一份由程序自动生成的性能测试图表索引它并不包含人工撰写的分析文字而是把 v1.16.3 版本工作流性能测试产出的全部 PNG 图表按“测试用例 → 压测场景”两级结构组织起来每个场景下列出五类图表图表类型文件名后缀内容数据量_data_volume.png压测全程接收/发送的数据总量PayloadHeaders延迟分解_duration_breakdown.pngHTTP 请求时延按分位数的完整分解全量范围低延迟放大_duration_low.png去掉 Waiting/Duration 等高量级指标后的低延迟放大视图汇总_summary.png成功率 / 失败率 / 最大并发 VU 数吞吐_throughput.png数据收发吞吐KB/s与每秒迭代数多轮对比_duration_comparison.png同一测试多轮运行的 p50 与 p95 时延对比这份 README 由 tests/perf/report/readme.go 中的writeFolderReadme/writeReadmes生成程序遍历输出目录下所有.png文件通过extractTestBaseName剥离_duration_breakdown、_summary、_avg、_T_等后缀还原“基础测试名”再用groupPngsByTest按测试名分组、写入###标题。因此报告中的标题层级天然对应测试用例与场景例如### TestParallelWorkflowWithMaxVUs之下的#### T_110_440就是该测试下的一个具体压测场景。二、读懂命名规则T_并发数_迭代次数报告中的场景命名遵循T_VUs_iterations约定含义可在 tests/perf/workflows/README.md 的术语表中确认VUVirtual User同一时刻并发运行的工作流数量Iterations工作流总运行次数Req_Duration完成一次工作流运行所耗时间SidecarDapr 边车sidecar。据此本报告中出现的场景可立即解码场景名VU 并发数总迭代数含义T_110_440110440并行工作流高并发压测T_350_14003501400串行工作流高并发压力测试T_30_300/T_60_300/T_90_30030/60/90300总迭代固定逐步提高并发T_30_3003 次30300固定并发与迭代重复 3 轮这些场景在 k6 脚本 tests/perf/workflows/test.js 中逐一定义均使用shared-iterations执行器并设置了maxDuration上限例如t_30_300为 30 VUs / 300 次迭代 / 200s 上限t_350_1400为 350 VUs / 1400 次迭代 / 1000s 上限t_500_10000为 500 VUs / 10000 次迭代 / 3600s 上限后者用于延迟类场景。三、五类工作流压测场景逐一拆解本报告覆盖五个测试用例分别对应工作流的不同执行形态。1. TestParallelWorkflowWithMaxVUs并行工作流工作流sum_parallel_wf5 个活动并行执行由工作流聚合结果场景T_110_440110 VUs、440 次迭代考察点高并发下的 fan-out / fan-in扇出扇入行为。源码见 tests/perf/workflows/workflow_test.go 的TestParallelWorkflowWithMaxVUs。2. TestSeriesWorkflowWithMaxVUs串行工作流高并发工作流sum_series_wf5 个活动链式串行执行每个活动做数值计算并把结果回传给工作流场景T_350_1400350 VUs、1400 次迭代是报告中标定并发最高的串行场景用于对串行工作流施加压力考察点高并发下串行链路的时延与资源占用。注意报告中的#### T_350_1400标题下放置的是TestSeriesWorkflowWithMaxVUs_T_350_1400_*图表与测试函数的对应关系可在TestSeriesWorkflowWithMaxVUs中确认。3. TestWorkflowWithConstantIterations固定迭代数工作流sum_series_wf场景T_30_300、T_60_300、T_90_300——总迭代恒定为 300最大 VU 从 30 逐步升到 90考察点在完成相同总量的工作前提下提升并发对延迟和资源的影响。源码中每个子测试运行前会调用tr.Platform.Restart重启应用以清空状态隔离并发因素。4. TestWorkflowWithConstantVUs固定并发工作流sum_series_wf场景T_30_300连续运行3 次不重启应用因此本测试的图表带_avg前缀并额外产出_duration_comparison.png多轮对比图考察点重复负载下延迟的稳定性。makeCombinedCharts见 tests/perf/report/common_charts.go只有在同一测试积累 2 轮结果时才会生成对比图这正是报告中只有该测试与不同 Payload 测试出现_duration_comparison图的原因。5. TestWorkflowWithDifferentPayloads不同负载大小工作流state_wf活动 1 把指定大小数据写入状态存储、活动 2 读回、活动 3 删除工作流以数据大小作为输入并把该大小的字符串作为 Payload 传给活动场景T_30_300固定输入分别为10000/50000/100000字节考察点状态操作在 10KB、50KB、100KB 三种 Payload 下的时延与数据量表现。源码会在汇总表中输出Payload SizeKB因此本测试同样带_avg前缀并生成多轮对比图。TestWorkflowWithDifferentPayloads_T_30_300_avg_duration_comparison四、图表类型与源码实现对应关系报告中每一张图都可以在 tests/perf/report 目录找到对应实现理解实现就能准确读图_summary.pngk6_charts.go 的makeSummaryChart三根柱形分别表示成功率%、失败率%、最大 VU 数是判断压测是否达标的第一张图_duration_breakdown.pngcommon_charts.go 的makeDurationBreakdownChart横轴为 min/med/avg/p90/p95/p99/p99.9/max 分位点纵轴为时间自动在 µs / ms / s 间切换单位绘制 Connecting、TLS、Sending、Receiving、Blocked、Waiting、Duration、Iteration Duration、Failed Requests 共 9 条指标线用于定位延迟构成_duration_low.png同一函数的低延迟放大版本剔除 Waiting、Duration、Iteration Duration 三类量级较大的指标并收窄 Y 轴便于观察毫秒级以下的细分阶段_data_volume.pngmakeDataVolumeChart柱形图对比 Data received 与 Data sent 总量单位按数值自动选择 KB / MB / GB_throughput.pngmakeThroughputChart柱形图对比收发吞吐KB/s标题附带iterations/sec迭代速率_duration_comparison.pngmakeCombinedCharts多轮运行的 p50绿色与 p95红色折线对比直观呈现轮次间延迟波动。五、测试的执行骨架从 k6 到汇总表这些图表的原始数据来自 tests/perf/workflows/workflow_test.go其执行流程可以归纳为TestMain依据环境变量DAPR_PERF_WORKFLOW_BACKEND_NAME构建perf-workflowsapp与perf-workflowsapp-scaled两个部署后者为 3 副本用于多实例场景并为应用与 Dapr 边车配置 CPU/内存的 requests/limits每个子测试先通过start-workflow-runtime初始化工作流运行时必要时重启应用清空状态runk6test通过 tests/perf/workflows/test.js 发起压测k6 每次迭代向TARGET_URL/{iterationInTest}POST 包含workflow_name与workflow_input的 JSON并以checks阈值如rate1即 100% 成功率作为通过条件测试结束前还会调用 Dapr 的/v1.0/shutdown优雅下线边车addTestResults汇总 k6 时延/等待/迭代耗时趋势以及应用与边车的 CPU、内存、重启次数写入summary.Table最终由报告生成器tests/perf/report 目录下的charts.go、k6_charts.go、common_charts.go等绘制成本目录下的 PNG 图表并生成 README。六、如何扩展阅读本报告查看全部图表tests/perf/report/charts/v1.16.3/workflows/目录下共 38 个文件1 个 README 与 37 张 PNG除本文提到的图表类型外各场景的_data_volume与_throughput图可交叉验证不同并发、不同 Payload 下的数据面开销复现实验工作流压测的入口代码、k6 脚本与场景定义分别位于 tests/perf/workflows/workflow_test.go、tests/perf/workflows/test.js 与 tests/perf/workflows/README.md压测需在 Kubernetes 集群中运行构建标签为perf理解测试框架压测编排、资源采集与汇总逻辑位于 tests/runner 与 tests/perf/utils报告生成的整体入口与图表分类逻辑见 tests/perf/report/readme.go 与 tests/perf/report/classify.go。总的来说这份 v1.16.3 的工作流性能图表报告是理解 Dapr Workflow 运行时在高并发、固定迭代、变长 Payload 与多副本部署下行为表现的直接入口先看 summary 确认成功率再看 duration_breakdown 定位延迟构成最后用 duration_comparison 判断多轮稳定性即可完成一次完整的工作流性能体检。【免费下载链接】daprDapr is a portable runtime for building distributed applications across cloud and edge, combining event-driven architecture with workflow orchestration.项目地址: https://gitcode.com/GitHub_Trending/da/dapr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考