You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Milvus集合搜索报错:连接被拒绝且集合未加载

Milvus 2.4.0 查询正常但搜索报错问题排查

错误信息

[2024-08-07 10:53:27,109] WARNING in decorators: [search] retry:9, cost: 3.00s, reason: <_InactiveRpcError: StatusCode.UNAVAILABLE, failed to connect to all addresses; last error: UNKNOWN: ipv4:172.16.200.46:19530: Failed to connect to remote host: Connection refused>
[2024-08-07 10:53:30,126] ERROR in decorators: RPC error: [search], <MilvusException: (code=101, message=failed to search: collection not loaded[collection=451674119090946895])>, <Time:{'RPC start': '2024-08-07 10:53:17.306848', 'RPC error': '2024-08-07 10:53:30.126018'}>

代码片段

from config.config import *
from pymilvus import (
    connections, utility, Collection, FieldSchema, CollectionSchema, DataType)

connections.connect("default", host=MILVUS_HOST, port=MILVUS_PORT)
collection = Collection(COLLECTION_NAME)
collection.load()
list_collection = utility.list_collections()

# Query works fine
res_query = collection.query(
    expr="id > 1", 
    output_fields=['id'], 
    timeout=5.0
)

# Search raises error
img = cv2.imread('image_test/test.png')
embedding_vec = feature_extraction(img)
search_params = {"metric_type": "COSINE", "params": {"nprobe": 10}}
res_search = collection.search(
    data=[embedding_vec],
    anns_field="vector",
    param=search_params,
    expr="active in [1]",
    output_fields=['id'],
    limit=TOP_K)

环境信息

  • Milvus Version: 2.4.0
  • Host: ipv4:172.16.200.46:19530

问题原因分析

Milvus中**查询(query)仅与协调器(Coord)交互,而搜索(search)**需要客户端直接与查询节点(Query Node)通信。问题核心是客户端无法连接到查询节点,或集合未在查询节点上完成加载:

  1. collection.load()调用后未等待加载完成就执行搜索,导致集合实际未加载到查询节点
  2. 查询节点服务异常,或其默认端口(19531)未对客户端开放
  3. 分布式部署下,Coord返回给客户端的查询节点地址不可访问
  4. 集合数据量过大,加载超时未完成

解决步骤

1. 确认集合加载状态

调用工具函数查看加载状态,或在加载后等待完成:

collection.load()
# 等待加载完成,超时时间可根据集合大小调整
collection.wait_for_load_complete(timeout=60)

# 验证加载状态
print(utility.load_state(COLLECTION_NAME))

2. 检查查询节点可用性

  • 用telnet 172.16.200.46 19531测试客户端能否访问查询节点默认端口
  • 通过Milvus控制台或命令行工具确认查询节点是否正常运行
  • 若使用自定义端口,检查Milvus配置文件中query.port的设置并确保端口开放

3. 调整部署与连接配置

  • 分布式部署场景下,确保查询节点的IP地址可被客户端访问(避免内网地址无法穿透)
  • 重启Milvus服务,排查查询节点是否存在启动异常

4. 优化集合加载参数

针对大数据量集合,调整加载时的资源配置:

# 指定副本数加载(需集群有足够查询节点)
collection.load(replica_number=1)

内容的提问来源于stack exchange,提问作者tmandyai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:23:18