- 配置文件: 在启动 Milvus 之前,通过
milvus.yaml文件进行配置,这是最常用、最核心的方式。 - 环境变量: 可以通过设置环境变量来覆盖配置文件中的参数。
- 运行时动态调整: 对于某些参数(如资源限制),可以通过 Milvus Dashboard 或 RESTful API 在运行时动态修改。
以下我将按照 核心组件 和 关键功能 的分类,为您梳理 Milvus 2.4 中最重要的参数,并提供建议值。

(图片来源网络,侵删)
核心组件参数
这些参数定义了 Milvus 各个组件的行为和资源限制。
Milvus Server (milvus.yaml)
这是整个 Milvus 实例的入口,负责协调其他组件。
| 参数路径 | 参数名 | 描述 | 推荐值/说明 |
|---|---|---|---|
common |
metrics.enable |
是否暴露 Prometheus 格式的监控指标。 | true (强烈建议开启,用于监控) |
common |
metrics.exportAddress |
监控指标的暴露地址。 | "0.0.0.0:9091" |
common |
log.level |
日志级别 (debug, info, warn, error, fatal)。 |
info (生产环境) / debug (调试) |
common |
log.rootPath |
日志文件存储路径。 | "/var/log/milvus" |
common |
log.format |
日志格式 (text, json)。 |
json (便于日志收集和分析) |
common |
log.maxSize |
单个日志文件的最大大小。 | "512MB" |
common |
log.maxBackups |
保留的日志文件最大数量。 | "20" |
common |
log.maxAge |
日志文件保留的最大天数。 | "30" |
common |
log.compress |
是否压缩旧日志文件。 | true |
Coordinator (Coordinator)
Milvus 中的协调器组件,负责元数据管理、数据分片、负载均衡等。
| 组件 | 参数路径 | 参数名 | 描述 | 推荐值/说明 |
|---|---|---|---|---|
| Root Coordinator | rootCoord |
address |
Root Coordinator 的监听地址。 | "localhost" |
| Root Coordinator | rootCoord |
port |
Root Coordinator 的监听端口。 | 53100 |
| Root Coordinator | rootCoord |
dmlChannelNum |
用于数据写入/删除的 GRPC 通道数量。 | 2 (2 个足够,可根据写入并发量调整) |
| Root Coordinator | rootCoord |
maxPartitionNum |
一个 Collection 允许的最大分区数。 | 4096 (根据业务需求调整,默认值很大) |
| Query Coordinator | queryCoord |
address |
Query Coordinator 的监听地址。 | "localhost" |
| Query Coordinator | queryCoord |
port |
Query Coordinator 的监听端口。 | 53101 |
| Query Coordinator | queryCoord |
autoHandoff |
是否在索引构建完成后自动将数据分片从 Query Node 转移到 Data Node。 | true (核心功能,必须开启) |
| Query Coordinator | queryCoord |
minSegmentSizeToEnableIndex |
启动索引构建的最小 Segment 大小。 | 1024 (根据数据量和延迟要求调整,值越小索引越频繁) |
| Data Coordinator | dataCoord |
address |
Data Coordinator 的监听地址。 | "localhost" |
| Data Coordinator | dataCoord |
port |
Data Coordinator 的监听端口。 | 53102 |
| Data Coordinator | dataCoord |
compaction.enable |
是否启用数据合并。 | true (核心功能,用于数据清理和提升查询性能) |
| Data Coordinator | dataCoord |
compaction.level0.maxSegments |
Level-0 合并的触发条件,当 Segment 数量达到此值时触发。 | 8 (根据写入频率调整,值越大延迟越高,I/O 效率越好) |
| Data Coordinator | dataCoord |
compaction.level1.maxSize |
Level-1 合并的目标大小,当总大小超过此值时触发。 | 8192 (单位 MB,根据磁盘容量和查询性能要求调整) |
| Data Coordinator | dataCoord |
retentionDuration |
数据保留时长。 | "0" (表示永久保留,按需设置) |
Node (Worker)
这些是真正执行数据存储和计算的节点。

(图片来源网络,侵删)
| 组件 | 参数路径 | 参数名 | 描述 | 推荐值/说明 |
|---|---|---|---|---|
| Data Node | dataNode |
address |
Data Node 的监听地址。 | "localhost" |
| Data Node | dataNode |
port |
Data Node 的监听端口。 | 53103 |
| Data Node | dataNode |
grpc.serverMaxRecvMsgSize |
Data Node GRPC 服务接收的最大消息大小。 | 1073741824 (1GB,处理大查询结果时可能需要) |
| Data Node | dataNode |
grpc.serverMaxSendMsgSize |
Data Node GRPC 服务发送的最大消息大小。 | 1073741824 (1GB) |
| Query Node | queryNode |
address |
Query Node 的监听地址。 | "localhost" |
| Query Node | queryNode |
port |
Query Node 的监听端口。 | 53104 |
| Query Node | queryNode |
gpu.enable |
是否启用 GPU 加速。 | false / true (如果服务器有 NVIDIA GPU) |
| Query Node | queryNode |
cache.enable |
是否启用缓存。 | true (能显著提升热点数据的查询速度) |
| Query Node | queryNode |
cache.memoryLimit |
缓存内存上限。 | 4GB (根据服务器内存大小设置,通常是总内存的 10%-20%) |
关键功能与性能参数
这些参数直接影响 Milvus 的性能、可用性和数据一致性。
存储
Milvus 2.4 主要使用对象存储(如 S3, GCS, MinIO)来持久化数据和元数据。
| 参数路径 | 参数名 | 描述 | 推荐值/说明 |
|---|---|---|---|
etcd |
endpoints |
etcd 集群的地址,用于存储元数据。 | ["localhost:2379"] (生产环境推荐 3 或 5 节点集群) |
minio |
address |
对象存储服务的地址。 | "localhost:9000" |
minio |
accessKeyID / secretAccessKey |
对象存储的访问密钥。 | 根据你的存储服务配置 |
minio |
useSSL |
是否使用 HTTPS 连接对象存储。 | false (内网) / true (公网) |
minio |
bucketName |
存储数据的桶名称。 | 自定义,如 "milvus-bucket" |
minio |
rootPath |
在桶内的根路径。 | "files" |
minio |
cloudProvider |
云服务商类型 ("aws", "gcp", "azure", "minio")。 |
"minio" (自建) / 对应云服务商 |
minio |
region |
云存储的区域。 | 根据云服务商配置 |
消息队列
Milvus 使用消息队列(如 Pulsar, Kafka)来解耦数据写入和索引构建。
| 参数路径 | 参数名 | 描述 | 推荐值/说明 |
|---|---|---|---|
pulsar |
address |
Pulsar 集群的地址。 | "localhost:6650" |
pulsar |
webServiceUrl |
Pulsar Web 服务的地址。 | "http://localhost:8080" |
pulsar |
useTls |
是否启用 TLS。 | false |
pulsar |
messageTTL |
消息的生存时间。 | "24h" (确保消息在被消费前不会被清理) |
性能与资源
这些参数控制 Milvus 的资源使用和性能调优。

(图片来源网络,侵删)
| 参数路径 | 参数名 | 描述 | 推荐值/说明 |
|---|---|---|---|
local |
path |
如果使用本地存储,数据存放的路径。 | 不推荐在生产环境使用,仅用于测试。 |
quota |
enabled |
是否启用配额管理,限制资源使用。 | false / true (多租户环境建议开启) |
quota |
quotaCenter.enabled |
是否启用配额中心。 | false / true (与 quota.enabled 配合使用) |
general |
timeTickInterval |
内部任务调度的时间间隔。 | "1s" (通常无需修改) |
general |
vm.enabled |
是否启用虚拟内存管理,用于处理比物理内存更大的数据集。 | false (对性能影响大,仅在特殊场景下考虑) |
Docker Compose 示例
一个典型的 docker-compose.yml 文件会体现上述大部分参数的配置。
version: '3.5'
services:
etcd:
container_name: etcd
image: quay.io/coreos/etcd:v3.5.0
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296 # 4GB
volumes:
- ./volumes/etcd/data:/etcd
ports:
- "2379:2379"
- "2380:2380"
minio:
container_name: minio
image: minio/minio:RELEASE.2025-03-20T20-16-18Z
environment:
- MINIO_ACCESS_KEY=minioadmin
- MINIO_SECRET_KEY=minioadmin
volumes:
- ./volumes/minio/data:/data
command: minio server /data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
pulsar:
container_name: pulsar
image: apachepulsar/pulsar:3.0.0
volumes:
- ./volumes/pulsar/data:/pulsar/data
- ./volumes/pulsar/conf:/pulsar/conf
ports:
- "6650:6650"
- "8080:8080"
command: bin/pulsar standalone
milvus-standalone:
container_name: milvus-standalone
image: milvusdb/milvus:v2.4.0
command: ["milvus", "run", "standalone"]
environment:
- ETCD_ENDPOINTS=etcd:2379
- MINIO_ADDRESS=minio:9000
- PULSAR_ADDRESS=pulsar:6650
volumes:
- ./volumes/milvus:/var/lib/milvus
ports:
- "19530:19530"
- "9091:9091" # Prometheus metrics
depends_on:
- etcd
- minio
- pulsar
总结与最佳实践
-
生产环境部署:
- 组件分离: 将
etcd,minio,pulsar和milvus部署在不同的节点或容器中,避免单点故障和资源争抢。 - 资源充足: 为每个组件分配足够的 CPU 和内存,特别是
queryNode和dataNode,它们是计算密集型服务。 - 监控告警: 务必开启
metrics.enable,并使用 Prometheus + Grafana 对 Milvus 进行全方位监控和告警。 - 持久化存储: 生产环境 必须使用对象存储(MinIO, S3, GCS),而不是本地存储。
- 组件分离: 将
-
性能调优:
- 索引: 选择合适的索引类型(如
IVF_FLAT,HNSW)和参数(nlist,ef)对查询性能至关重要。 - 合并:
compaction参数的调整需要在查询延迟和写入/删除延迟之间找到平衡。level0.maxSegments越小,索引越频繁,查询延迟越低,但写入压力越大。 - 缓存: 启用
queryNode.cache并合理设置memoryLimit,可以大幅提升热点数据的查询速度。
- 索引: 选择合适的索引类型(如
-
高可用:
- Milvus 2.4 支持多节点部署,通过增加
rootCoord,queryCoord,dataCoord的副本数来实现高可用,请参考官方文档进行 HA 集群部署。
- Milvus 2.4 支持多节点部署,通过增加
这份参数列表涵盖了 Milvus 2.4 的绝大部分核心配置,在实际应用中,建议从官方推荐的默认配置开始,然后根据您的具体业务场景(数据量、查询模式、SLA 要求)进行逐步调优。
