試報(bào)告解讀:v1.16.3 工作流壓測(cè)圖表手冊(cè))
Dapr Workflow 性能測(cè)試報(bào)告解讀v1.16.3 工作流壓測(cè)圖表手冊(cè)【免費(fèi)下載鏈接】daprDapr is a portable runtime for building distributed applications across cloud and edge, combining event-driven architecture with workflow orchestration.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/da/dapr本指南以 Dapr 倉(cāng)庫(kù)中tests/perf/report/charts/v1.16.3/workflows/下的自動(dòng)生成報(bào)告為核心講解 Dapr Workflow工作流性能測(cè)試的五類典型壓測(cè)場(chǎng)景、圖表目錄的生成機(jī)制與每一類圖表的讀法。讀完本文你將掌握如何根據(jù)測(cè)試命名如T_110_440反推壓測(cè)負(fù)載模型如何通過(guò) summary、duration_breakdown、throughput 等圖表快速定位工作流執(zhí)行延遲、吞吐與資源表現(xiàn)以及這套 k6 圖表管線背后的源碼依據(jù)。一、報(bào)告是什么自動(dòng)生成的性能圖表索引tests/perf/report/charts/v1.16.3/workflows/README.md是一份由程序自動(dòng)生成的性能測(cè)試圖表索引它并不包含人工撰寫(xiě)的分析文字而是把 v1.16.3 版本工作流性能測(cè)試產(chǎn)出的全部 PNG 圖表按“測(cè)試用例 → 壓測(cè)場(chǎng)景”兩級(jí)結(jié)構(gòu)組織起來(lái)每個(gè)場(chǎng)景下列出五類圖表圖表類型文件名后綴內(nèi)容數(shù)據(jù)量_data_volume.png壓測(cè)全程接收/發(fā)送的數(shù)據(jù)總量PayloadHeaders延遲分解_duration_breakdown.pngHTTP 請(qǐng)求時(shí)延按分位數(shù)的完整分解全量范圍低延遲放大_duration_low.png去掉 Waiting/Duration 等高量級(jí)指標(biāo)后的低延遲放大視圖匯總_summary.png成功率 / 失敗率 / 最大并發(fā) VU 數(shù)吞吐_throughput.png數(shù)據(jù)收發(fā)吞吐KB/s與每秒迭代數(shù)多輪對(duì)比_duration_comparison.png同一測(cè)試多輪運(yùn)行的 p50 與 p95 時(shí)延對(duì)比這份 README 由 tests/perf/report/readme.go 中的writeFolderReadme/writeReadmes生成程序遍歷輸出目錄下所有.png文件通過(guò)extractTestBaseName剝離_duration_breakdown、_summary、_avg、_T_等后綴還原“基礎(chǔ)測(cè)試名”再用groupPngsByTest按測(cè)試名分組、寫(xiě)入###標(biāo)題。因此報(bào)告中的標(biāo)題層級(jí)天然對(duì)應(yīng)測(cè)試用例與場(chǎng)景例如### TestParallelWorkflowWithMaxVUs之下的#### T_110_440就是該測(cè)試下的一個(gè)具體壓測(cè)場(chǎng)景。二、讀懂命名規(guī)則T_并發(fā)數(shù)_迭代次數(shù)報(bào)告中的場(chǎng)景命名遵循T_VUs_iterations約定含義可在 tests/perf/workflows/README.md 的術(shù)語(yǔ)表中確認(rèn)VUVirtual User同一時(shí)刻并發(fā)運(yùn)行的工作流數(shù)量Iterations工作流總運(yùn)行次數(shù)Req_Duration完成一次工作流運(yùn)行所耗時(shí)間SidecarDapr 邊車sidecar。據(jù)此本報(bào)告中出現(xiàn)的場(chǎng)景可立即解碼場(chǎng)景名VU 并發(fā)數(shù)總迭代數(shù)含義T_110_440110440并行工作流高并發(fā)壓測(cè)T_350_14003501400串行工作流高并發(fā)壓力測(cè)試T_30_300/T_60_300/T_90_30030/60/90300總迭代固定逐步提高并發(fā)T_30_3003 次30300固定并發(fā)與迭代重復(fù) 3 輪這些場(chǎng)景在 k6 腳本 tests/perf/workflows/test.js 中逐一定義均使用shared-iterations執(zhí)行器并設(shè)置了maxDuration上限例如t_30_300為 30 VUs / 300 次迭代 / 200s 上限t_350_1400為 350 VUs / 1400 次迭代 / 1000s 上限t_500_10000為 500 VUs / 10000 次迭代 / 3600s 上限后者用于延遲類場(chǎng)景。三、五類工作流壓測(cè)場(chǎng)景逐一拆解本報(bào)告覆蓋五個(gè)測(cè)試用例分別對(duì)應(yīng)工作流的不同執(zhí)行形態(tài)。1. TestParallelWorkflowWithMaxVUs并行工作流工作流sum_parallel_wf5 個(gè)活動(dòng)并行執(zhí)行由工作流聚合結(jié)果場(chǎng)景T_110_440110 VUs、440 次迭代考察點(diǎn)高并發(fā)下的 fan-out / fan-in扇出扇入行為。源碼見(jiàn) tests/perf/workflows/workflow_test.go 的TestParallelWorkflowWithMaxVUs。2. TestSeriesWorkflowWithMaxVUs串行工作流高并發(fā)工作流sum_series_wf5 個(gè)活動(dòng)鏈?zhǔn)酱袌?zhí)行每個(gè)活動(dòng)做數(shù)值計(jì)算并把結(jié)果回傳給工作流場(chǎng)景T_350_1400350 VUs、1400 次迭代是報(bào)告中標(biāo)定并發(fā)最高的串行場(chǎng)景用于對(duì)串行工作流施加壓力考察點(diǎn)高并發(fā)下串行鏈路的時(shí)延與資源占用。注意報(bào)告中的#### T_350_1400標(biāo)題下放置的是TestSeriesWorkflowWithMaxVUs_T_350_1400_*圖表與測(cè)試函數(shù)的對(duì)應(yīng)關(guān)系可在TestSeriesWorkflowWithMaxVUs中確認(rèn)。3. TestWorkflowWithConstantIterations固定迭代數(shù)工作流sum_series_wf場(chǎng)景T_30_300、T_60_300、T_90_300——總迭代恒定為 300最大 VU 從 30 逐步升到 90考察點(diǎn)在完成相同總量的工作前提下提升并發(fā)對(duì)延遲和資源的影響。源碼中每個(gè)子測(cè)試運(yùn)行前會(huì)調(diào)用tr.Platform.Restart重啟應(yīng)用以清空狀態(tài)隔離并發(fā)因素。4. TestWorkflowWithConstantVUs固定并發(fā)工作流sum_series_wf場(chǎng)景T_30_300連續(xù)運(yùn)行3 次不重啟應(yīng)用因此本測(cè)試的圖表帶_avg前綴并額外產(chǎn)出_duration_comparison.png多輪對(duì)比圖考察點(diǎn)重復(fù)負(fù)載下延遲的穩(wěn)定性。makeCombinedCharts見(jiàn) tests/perf/report/common_charts.go只有在同一測(cè)試積累 2 輪結(jié)果時(shí)才會(huì)生成對(duì)比圖這正是報(bào)告中只有該測(cè)試與不同 Payload 測(cè)試出現(xiàn)_duration_comparison圖的原因。5. TestWorkflowWithDifferentPayloads不同負(fù)載大小工作流state_wf活動(dòng) 1 把指定大小數(shù)據(jù)寫(xiě)入狀態(tài)存儲(chǔ)、活動(dòng) 2 讀回、活動(dòng) 3 刪除工作流以數(shù)據(jù)大小作為輸入并把該大小的字符串作為 Payload 傳給活動(dòng)場(chǎng)景T_30_300固定輸入分別為10000/50000/100000字節(jié)考察點(diǎn)狀態(tài)操作在 10KB、50KB、100KB 三種 Payload 下的時(shí)延與數(shù)據(jù)量表現(xiàn)。源碼會(huì)在匯總表中輸出Payload SizeKB因此本測(cè)試同樣帶_avg前綴并生成多輪對(duì)比圖。TestWorkflowWithDifferentPayloads_T_30_300_avg_duration_comparison四、圖表類型與源碼實(shí)現(xiàn)對(duì)應(yīng)關(guān)系報(bào)告中每一張圖都可以在 tests/perf/report 目錄找到對(duì)應(yīng)實(shí)現(xiàn)理解實(shí)現(xiàn)就能準(zhǔn)確讀圖_summary.pngk6_charts.go 的makeSummaryChart三根柱形分別表示成功率%、失敗率%、最大 VU 數(shù)是判斷壓測(cè)是否達(dá)標(biāo)的第一張圖_duration_breakdown.pngcommon_charts.go 的makeDurationBreakdownChart橫軸為 min/med/avg/p90/p95/p99/p99.9/max 分位點(diǎn)縱軸為時(shí)間自動(dòng)在 μs / ms / s 間切換單位繪制 Connecting、TLS、Sending、Receiving、Blocked、Waiting、Duration、Iteration Duration、Failed Requests 共 9 條指標(biāo)線用于定位延遲構(gòu)成_duration_low.png同一函數(shù)的低延遲放大版本剔除 Waiting、Duration、Iteration Duration 三類量級(jí)較大的指標(biāo)并收窄 Y 軸便于觀察毫秒級(jí)以下的細(xì)分階段_data_volume.pngmakeDataVolumeChart柱形圖對(duì)比 Data received 與 Data sent 總量單位按數(shù)值自動(dòng)選擇 KB / MB / GB_throughput.pngmakeThroughputChart柱形圖對(duì)比收發(fā)吞吐KB/s標(biāo)題附帶iterations/sec迭代速率_duration_comparison.pngmakeCombinedCharts多輪運(yùn)行的 p50綠色與 p95紅色折線對(duì)比直觀呈現(xiàn)輪次間延遲波動(dòng)。五、測(cè)試的執(zhí)行骨架從 k6 到匯總表這些圖表的原始數(shù)據(jù)來(lái)自 tests/perf/workflows/workflow_test.go其執(zhí)行流程可以歸納為T(mén)estMain依據(jù)環(huán)境變量DAPR_PERF_WORKFLOW_BACKEND_NAME構(gòu)建perf-workflowsapp與perf-workflowsapp-scaled兩個(gè)部署后者為 3 副本用于多實(shí)例場(chǎng)景并為應(yīng)用與 Dapr 邊車配置 CPU/內(nèi)存的 requests/limits每個(gè)子測(cè)試先通過(guò)start-workflow-runtime初始化工作流運(yùn)行時(shí)必要時(shí)重啟應(yīng)用清空狀態(tài)runk6test通過(guò) tests/perf/workflows/test.js 發(fā)起壓測(cè)k6 每次迭代向TARGET_URL/{iterationInTest}POST 包含workflow_name與workflow_input的 JSON并以checks閾值如rate1即 100% 成功率作為通過(guò)條件測(cè)試結(jié)束前還會(huì)調(diào)用 Dapr 的/v1.0/shutdown優(yōu)雅下線邊車addTestResults匯總 k6 時(shí)延/等待/迭代耗時(shí)趨勢(shì)以及應(yīng)用與邊車的 CPU、內(nèi)存、重啟次數(shù)寫(xiě)入summary.Table最終由報(bào)告生成器tests/perf/report 目錄下的charts.go、k6_charts.go、common_charts.go等繪制成本目錄下的 PNG 圖表并生成 README。六、如何擴(kuò)展閱讀本報(bào)告查看全部圖表tests/perf/report/charts/v1.16.3/workflows/目錄下共 38 個(gè)文件1 個(gè) README 與 37 張 PNG除本文提到的圖表類型外各場(chǎng)景的_data_volume與_throughput圖可交叉驗(yàn)證不同并發(fā)、不同 Payload 下的數(shù)據(jù)面開(kāi)銷復(fù)現(xiàn)實(shí)驗(yàn)工作流壓測(cè)的入口代碼、k6 腳本與場(chǎng)景定義分別位于 tests/perf/workflows/workflow_test.go、tests/perf/workflows/test.js 與 tests/perf/workflows/README.md壓測(cè)需在 Kubernetes 集群中運(yùn)行構(gòu)建標(biāo)簽為perf理解測(cè)試框架壓測(cè)編排、資源采集與匯總邏輯位于 tests/runner 與 tests/perf/utils報(bào)告生成的整體入口與圖表分類邏輯見(jiàn) tests/perf/report/readme.go 與 tests/perf/report/classify.go。總的來(lái)說(shuō)這份 v1.16.3 的工作流性能圖表報(bào)告是理解 Dapr Workflow 運(yùn)行時(shí)在高并發(fā)、固定迭代、變長(zhǎng) Payload 與多副本部署下行為表現(xiàn)的直接入口先看 summary 確認(rèn)成功率再看 duration_breakdown 定位延遲構(gòu)成最后用 duration_comparison 判斷多輪穩(wěn)定性即可完成一次完整的工作流性能體檢。【免費(fèi)下載鏈接】daprDapr is a portable runtime for building distributed applications across cloud and edge, combining event-driven architecture with workflow orchestration.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/da/dapr創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考