milvus | 第 26 章:实战开发二:从一次 Search 性能问题开始读源码

📅 2026/7/9 16:13:05 👁️ 阅读次数 📝 编程学习
milvus | 第 26 章:实战开发二:从一次 Search 性能问题开始读源码

上一章我们完成了第一个实战:

给 Milvus 加一个小型参数校验。

那一章的重点是小范围、低风险、能用单测证明的改动。

这一章进入第二个实战:

从一次 Search 性能问题开始读源码。

Search 性能问题比参数校验复杂得多。

它可能慢在 Proxy,也可能慢在 QueryNode;可能是 QueryCoord 的 target 没收敛,也可能是 C++ 执行层没有命中索引;可能是请求参数太重,也可能是数据分布不均。

所以本章不直接给一个“万能优化方案”,而是训练一种排查方法:

先拆链路,再看指标,再形成假设,最后回到源码验证。

1. 本章学习目标

读完本章,你应该能掌握:

  1. 如何把一次慢 Search 拆成多个可观测阶段。
  2. 如何从Proxy.Search跟到 QueryNode 和 C++ 执行层。
  3. 如何区分慢在排队、等待 tSafe、segment search、reduce 还是结果返回。
  4. 如何阅读 QueryCoord target 和 balance 相关源码。
  5. 如何判断 Search 是否命中索引