You need to enable JavaScript to run this app.
文档中心
向量数据库 Milvus 版

向量数据库 Milvus 版

复制全文
下载 pdf
最佳实践
Milvus 向量检索性能测试操作手册
复制全文
下载 pdf
Milvus 向量检索性能测试操作手册
本文介绍如何使用 VectorDBBench 在火山引擎向量数据库 Milvus 版实例上执行向量检索性能测试。内容涵盖测试环境准备、实例配置、工具安装、测试执行及结果验证,帮助您在自有环境中复现指定测试场景,并建立统一的性能基线。​
适用场景​
  • 评估 Milvus 在大规模向量数据集下的检索吞吐量、响应延迟及召回率。​
  • 使用统一的数据集、索引参数和并发配置,复现指定性能测试场景。​
说明​
建议在中国大陆云环境中执行测试,以减少网络环境、客户端规格及数据下载源等因素对测试结果的影响。​
前提条件​
  • 已创建向量数据库 Milvus 版 Dedicated 实例。具体操作,请参见创建实例。为保证测试结果具有可比性,建议按照下表配置实例规格。​
  • ​
    节点类型​
    CU 类型​
    规格​
    包月价格(元)​
    说明​
    元数据服务​
    -​
    1 核 2 GiB​
    117​
    -​
    Proxy​
    -​
    8 核 8 GiB​
    800​
    -​
    Data Node​
    -​
    2 核 4 GiB​
    234​
    -​
    Index Node​
    容量型​
    池化节点​
    按量计费​
    -​
    Query Node​
    容量型​
    48 核 48 GiB​
    5904​
    向量数据库 Milvus 版采用读写分离架构,并支持灵活扩缩容。请根据查询压力和召回目标保持足够的 Query Node 资源。​
    总价​
    -​
    -​
    7055 + 池化节点按需计费​
    -​
    ​
  • 已调整实例参数。具体操作,请参见修改实例配置。需调整的实例参数如下表所示。​
  • ​
    参数​
    建议值​
    默认值​
    说明​
    dataCoord.sealPolicy.channel.growingSegmentsMemSize​
    65536 MB​
    4096 MB​
    调整 Growing Segment 的内存封存阈值。​
    dataCoord.segment.diskSegmentMaxSize​
    1024000 MB​
    2048 MB ​
    调整磁盘 Segment 的最大大小。​
    dataCoord.segment.maxSize​
    1024000 MB​
    2048 MB​
    调整单个 Segment 的最大大小。​
    dataCoord.segment.maxBinlogFileNumber​
    2048​
    32​
    调整自动 sealed 的 binlog 文件数量上限。​
    queryNode.segcore.interimIndex.enableIndex​
    false​
    true​
    控制 growing segment 是否开启索引。​
    queryNode.mmap.growingMmapEnabled​
    true​
    false​
    控制 growing segment 是否开启 mmap。​
    queryNode.scheduler.maxReadConcurrentRatio​
    0.3​
    1​
    读任务(search/query)的并发倍率。​
    ​
说明​
  • 这些参数适用于大规模数据批量导入及追求极致检索性能的场景,可减少 Segment 过早封存或写入缓冲不足对性能测试结果的影响。​
  • 参数修改完成后,请等待实例恢复至运行中状态,再继续后续测试。​
说明​
  • 客户端规格会直接影响性能测试能力。为避免客户端成为性能瓶颈,建议使用 ecs.g4al.16xlarge 或更高规格,并选择 Debian 12 操作系统。​
  • 为减少网络时延对测试结果的影响,建议将 ECS 与 Milvus 实例部署在同一 VPC 和同一可用区。​
注意事项​
测试结果可能受到网络环境、客户端性能、实例资源状态、后台任务及系统负载等因素影响。如需获取技术支持,请联系火山引擎技术支持团队。​
操作步骤​
  1. 登录 ECS 并准备 Python 虚拟环境。​
  • 登录 ECS 后,执行以下命令安装 Python 虚拟环境依赖,并创建测试环境。​
  • ​
    sudo apt update​
    sudo apt install python3.11-venv​
    python -m venv .test​
    source .test/bin/activate​
    ​
  1. 下载并安装 VectorDBBench。​
  • 执行以下命令下载 VectorDBBench 源码并安装依赖。​
  • ​
    pip install vectordb-bench​
    ​
  1. 配置数据集下载源。​
  • 根据 ECS 所在地域选择是否修改数据集下载源:​
  • 中国大陆地域:建议切换至 Aliyun OSS 数据源,以提升下载速度和稳定性。​
  • ​
    export DATASET_SOURCE=AliyunOSS​
    export DEFAULT_DATASET_URL="assets.zilliz.com.cn/benchmark/"​
    ​
  • 中国大陆以外地域:无需修改。​
  1. 执行性能测试。​
  • 下载火山引擎提供的 run_bench.sh 脚本,脚本内容如下。​
  • ​
    #!/usr/bin/env bash​
    ​
    set -euo pipefail​
    usage() {​
    cat <<EOF​
    Usage:​
    $0 <uri> <username> <password>​
    Optional environment variables:​
    CLUSTER_ENDPOINT REST endpoint. Defaults to <uri>.​
    TOKEN Bearer token. Defaults to <username>:<password>.​
    EOF​
    }​
    if [[ $# -ne 3 ]]; then​
    usage​
    exit 1​
    fi​
    URI="$1"​
    USERNAME="$2"​
    PASSWORD="$3"​
    CLUSTER_ENDPOINT="${CLUSTER_ENDPOINT:-${URI%/}}"​
    CLUSTER_ENDPOINT="${CLUSTER_ENDPOINT%/}"​
    TOKEN="${TOKEN:-${USERNAME}:${PASSWORD}}"​
    command -v vectordbbench >/dev/null || {​
    echo "vectordbbench not found in PATH" >&2​
    exit 127​
    }​
    command -v curl >/dev/null || {​
    echo "curl not found in PATH" >&2​
    exit 127​
    }​
    alter_properties() {​
    sleep 30​
    echo "[$(date '+%F %T')] start alter_properties for VDBBench"​
    curl --fail-with-body --show-error --silent \​
    --request POST \​
    --url "${CLUSTER_ENDPOINT}/v2/vectordb/collections/alter_properties" \​
    --header "Authorization: Bearer ${TOKEN}" \​
    --header "Request-Timeout: 5" \​
    --header "Content-Type: application/json" \​
    -d "{​
    \"collectionName\": \"VDBBench\",​
    \"properties\": {​
    \"knowhere.enable_thp\": true,​
    \"knowhere.enable_prefetch\": true​
    }​
    }"​
    echo​
    echo "[$(date '+%F %T')] alter_properties finished"​
    }​
    alter_properties &​
    ALTER_PID=$!​
    BENCH_RC=0​
    vectordbbench milvusdiskann \​
    --case-type Performance768D10M \​
    --k 100 \​
    --num-concurrency 1,10,25,50,100,150,200,250,300,350,400 \​
    --uri ${URI} \​
    --user-name ${USERNAME} \​
    --password ${PASSWORD} \​
    --search-list 260 \​
    --replica-number 1 \​
    --num-shards 1 || BENCH_RC=$?​
    CURL_RC=0​
    wait "${ALTER_PID}" || CURL_RC=$?​
    if [[ "${CURL_RC}" -ne 0 ]]; then​
    echo "alter_properties failed with exit code ${CURL_RC}" >&2​
    fi​
    if [[ "${BENCH_RC}" -ne 0 ]]; then​
    exit "${BENCH_RC}"​
    fi​
    exit "${CURL_RC}"​
    ​
  • 执行以下命令启动性能测试。​
  • ​
    ./run_bench.sh <uri> <username> <password>​
    #请将命令中的 Milvus 实例地址、用户名和密码替换为实际信息。例如 ./run_bench.sh http://milvus-test.ivolces.com:19530 admin 'bytedance'。​
    ​
  1. 重复执行同一测试场景。​
  • 如果已完成数据导入和数据加载,可在命令中增加 --skip-drop-old 和 --skip-load 参数,跳过删除旧集合、重新导入数据和重新加载数据等准备步骤,从而缩短测试准备时间。命令示例如下。​
  • ​
    vectordbbench milvusdiskann \​
    --case-type Performance768D10M \​
    --k 100 \​
    --num-concurrency 1,10,25,50,100,150,200,250,300,350,400 \​
    --uri '${URI}' \​
    --user-name '${USERNAME}' \​
    --password '${PASSWORD}' \​
    --search-list 260 \​
    --replica-number 1 \​
    --num-shards 1 \​
    --skip-drop-old \​
    --skip-load​
    ​
  1. 结果验证。​
  • 测试完成后,查看 VectorDBBench 输出结果,并按照不同并发配置汇总关键性能指标。​
说明​
  • 建议重点关注以下指标:​
  • QPS:评估系统在不同并发下的吞吐能力。​
  • 响应延迟:重点关注平均值、P95 和 P99 等指标,评估响应稳定性。​
  • 召回率:评估检索结果的准确性是否满足业务要求。​
  • 为降低环境差异对测试结论的影响,建议在对比结果时保持以下条件一致:​
  • Milvus 实例规格和节点数量。​
  • 数据集、数据规模和测试场景。​
  • ECS 客户端规格、VPC、可用区和网络链路。​
  • 是否跳过数据导入、数据加载等准备阶段。​
最近更新时间:2026.07.03 15:11:46
这个页面对您有帮助吗?
有用
有用
无用
无用