首页 新闻 会员 周边

Qdrant 出现查询超时问题

0
悬赏园豆:30 [待解决问题]

部署在 k8s 集群上的 Qdrant 出现查询超时问题,错误日志如下:

025-11-02T12:20:33.657575Z ERROR qdrant::tonic::logging: gRPC /qdrant.Points/Recommend unexpectedly failed with Internal error "Service internal error: 1 of 1 read operations failed:\n  Timeout error: Operation 'retrieve' timed out after 60 seconds" 60.010902 

请问如何解决这个问题?

问题补充:

初步排查下来发现是并发性能问题

dudu的主页 dudu | 高人七级 | 园豆:22853
提问于:2025-11-02 22:45
< >
分享
所有回答(1)
0

Qdrant 在 k8s 上的 retrieve 超时,根因通常是磁盘 IO 瓶颈导致 HNSW 索引加载过慢。并发量上去之后,多个查询同时触发缺页中断,磁盘跟不上就把 60s 超时撑爆了。

几个方向排查和优化:

1. 确认是不是磁盘问题
看 Pod 所在节点的 PV 类型。如果用的是网络存储(NFS、Ceph RBD),随机读延迟会远高于本地盘。Qdrant 的 HNSW 索引是内存映射文件,冷查询时需要从磁盘 mmap 加载,网络存储的随机读 IOPS 根本扛不住并发。

解决方案:换本地 SSD 存储(local-path 或 local PV),或者给 Qdrant Pod 加 resource limit 保证独占磁盘带宽。

2. 调大内存让索引常驻
如果 collection 数据量没超内存,把 Qdrant 容器的内存 limit 调大到能装下全部索引文件,避免 mmap 缺页。Qdrant 配置里有个 --max-search-threads 参数,默认可能过高导致并发风暴,适当降低反而更稳。

3. 降并发或加副本
临时方案:客户端加连接池限流,控制并发查询数。根本方案:增加 Qdrant replica 分散读压力,k8s 里扩 Qdrant Pod 副本数,配合分片策略。

4. 检查 segment 数量
如果 collection 经常更新,segment 碎片多也会拖慢查询。用 Qdrant API 看一下 segment 数量,过多的话触发 optimize 合并。

先查 PV 类型,大概率是存储拖后腿。

badhope33834 | 园豆:278 (菜鸟二级) | 2026-09-11 08:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册