我使用的是 Milvus 2.3.3,两个数据库中有 17 个集合(一个数据库有 13 个,另一个数据库有 4 个)。我在包含 73k 个实体的 10 维向量集合上创建了一个 IVF_FLAT 索引,之前加载时没有出现任何问题。然而,在创建大型集合(4.87 亿个实体、512 个维度)并将查询节点扩展到 35 个(8 核、64 GB)后,较小集合的加载过程现在挂起在 0% 并最终出错。
这是来自
QueryCoord
的错误:
[WARN] [querycoordv2/services.go:821] ["failed to get replica info"]
[traceID=96f4baa1410c36a22d79eb60d1a260ea]
[collectionID=446032668450742728]
[replica=447208019517505549]
[error="failed to get channels, collection not loaded: collection=446032668450742728: collection not found"]
[errorVerbose="failed to get channels, collection not loaded: collection=446032668450742728: collection not found...
我将查询节点缩小到 4 个,但较小的集合仍然无法加载。我检查了 DataNode、DataCoord、Pulsar 和 ETCD 的日志,但它们看起来很好。
什么可能导致此问题?如何解决?任何指导或建议将不胜感激!
您遇到的问题可能源于 Milvus 实例中的大型集合(4.87 亿个实体,512 个维度)导致的资源争用和元数据不一致。当您尝试加载较小的集合时,Milvus 可能会难以分配资源或正确管理通道分配,尤其是在将查询节点缩小到 4 之后。错误消息表明 QueryCoord 无法找到集合所需的副本或通道,这表明QueryCoord 和 DataCoord 之间的元数据同步可能不完整或损坏。
要解决此问题,请确保为您的 Milvus 实例分配足够的资源,因为大型集合的大小和查询节点扩展可能会导致系统容量紧张。重新启动 QueryCoord 和 DataCoord 服务可能有助于刷新元数据并清除不一致之处。此外,请考虑优化查询节点的配置,例如均匀分配资源或暂时暂停大型集合以释放资源以加载较小的集合。如果问题仍然存在,请再次检查 Milvus 日志以获取更深入的见解或升级到更新版本,因为这可能会解决 2.3.3 中的错误或可扩展性限制。