mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 08:18:18 +00:00
a30357d21e
* feat(storage): add multipart put stage metrics * feat(scripts): add multipart put focus runner * docs(operations): add multipart put server-path guides * chore(scripts): add local rustfs restart helper * docs(observability): add local metrics backend guide * docs(observability): add localized multipart guides * fix(ecstore): validate multipart batching path * feat(obs): add erasure encode overlap metrics * docs(ops): update overlap retest summary * docs(ops): add batchblocks retest matrix * docs(ops): extend overlap candidate summary * docs(ops): capture 8-run overlap summary * feat(storage): switch rename_data to msgpack map * test(storage): add rename_data payload checks * feat(object): add zero_copy_eager put path * docs(ops): add zero_copy_eager put guide * docs(ops): add deeper zero-copy next steps
3.2 KiB
3.2 KiB
Issue #712 第三批继续验证结果总结
1. 背景
#712 第三批的第一轮静默 baseline 已经确认:
multipart_set_disk_encode是当前最主要热点multipart_complete_tail可见但不是第一瓶颈
在继续推进 multipart encode 优化线时,又出现了一次“指标空结果”的假阴性,需要单独记录,避免后续团队误判为打点无效。
2. 假阴性根因
现象:
- multipart benchmark 成功完成
summary.csv正常生成- Prometheus 中却只出现 ordinary PUT 的 stage:
ingress_prepareset_disk_writer_setupset_disk_encodeset_disk_rename
- 没有任何
multipart_*stage
根因:
- 本轮 benchmark 实际命中了
127.0.0.1:9000上残留的旧 RustFS 进程 - 该旧进程不是当前 worktree 的新二进制
- 因此即使 benchmark 是 multipart PUT,也不会产出本批新增的 multipart stage 标签
这次问题的本质不是“新打点代码无效”,而是“验证目标进程不对”。
3. 如何识别这类假阴性
推荐直接查询:
topk(
40,
count by (__name__, stage) (
{__name__=~"rustfs_s3_put_object_stage_duration_ms.*"}
)
)
如果你跑的是 multipart PUT,但结果里只有 ordinary PUT stage,而没有:
multipart_ingress_preparemultipart_set_disk_writer_setupmultipart_set_disk_encodemultipart_complete_tail
则优先判断为“验证目标进程可能不对”,而不要先判断为“metrics 打点无效”。
4. 前台纠偏复测
为了排除旧进程干扰,本轮直接使用当前 worktree 的 target/debug/rustfs 前台拉起服务,再做最小化 focused smoke。
复测 profile:
2g-128m-pc4
复测结果:
- Throughput:
373.78 MiB/s - Request rate:
2.92 obj/s - Avg latency:
5471.4ms
结果目录:
target/bench/issue712-multipart-server-path-foreground-smoke/summary.csv
5. 前台复测阶段指标
Prometheus 近窗口查询已经确认 multipart 四阶段都正常出现。
P95:
multipart_ingress_prepare:4.75msmultipart_set_disk_writer_setup:4.86msmultipart_set_disk_encode:7375msmultipart_complete_tail:13ms
同时还能看到 ordinary PUT 的阶段指标,但这不影响判断;关键是:
- multipart stage 已经实际落盘到 TSDB
- encode 依旧是最显著热点
6. 当前直接结论
这轮继续验证后的结论没有变化,反而更稳:
multipart_set_disk_encode仍然是>1GiB multipart PUT当前最主要优化目标multipart_complete_tail仍然是次级问题,不应抢在 encode 之前multipart_ingress_prepare和multipart_set_disk_writer_setup暂时不是第一优先级- 后续优化应继续围绕 multipart encode path,而不是先转去 complete tail / ingress
7. 对后续验证的要求
后续再做 multipart server-path 对照验证时,建议强制执行:
- 先确认服务进程确实来自当前 worktree 二进制
- 先确认
multipart_*stage 能被 Prometheus 查询到 - 再读取
summary.csv - 最后再判断 encode 优化是否真的有效
否则很容易再次出现“summary 正常,但阶段指标是旧进程数据”的假阴性。