Skip to content

Milvus configuration

Bennu edited this page Oct 21, 2021 · 5 revisions

Standalone System Configurations

Milvus standalone maintains many system variables that configure the operation. All configurations can be set manually before server startup. Each configuration has a default value, which can be used directly.

Log Configurations

This session configures the system log output. Using Milvus generates a collection of logs. By default, Milvus uses logs to record information at debug or even higher level for standard output (stdout) and standard error (stderr). You can set these configurations in milvus.yaml under milvus/configs directory.

Configuration Description Default Value
log.level
Log level in Milvus
  • You can configure this parameter as debug, info, warn, error, panic, or fatal.
  • We recommend using debug level under test and development environments, and info level in production environment.
  • debug
    log.file.rootPath
    Root path to the log files
  • The default value is set empty, indicating to output log files to standard output (stdout) and standard error (stderr).
  • If this parameter is set to a valid local path, Milvus log will be written and stored in this path.
  • Set this parameter as the path that you have permission to write. We recommend using /tmp/milvus.
  • ""

    etcd Configurations

    etcd is the metadata engine supporting Milvus' metadata storage and access. You can set these configurations in milvus.yaml.

    You do not need to change this session if you use the default milvus-standalone-docker-compose.yml for third-party services.

    Configuration Description Default Value
    etcd.endpoints
    Endpoints of etcd
  • Environment variable: ETCD_ENDPOINTS
  • Access etcd service with etcd.endpoints.
  • etcd preferentially acquires valid address from environment variable ETCD_ENDPOINTS when Milvus is booted up.
  • You can change this parameter as the endpoints of your own etcd cluster.
  • localhost:2379
    etcd.rootPath
    Root of key prefix to etcd
  • Milvus stores data in etcd with this root key prefix.
  • Be careful with changing this configuration if you have used Milvus for a period of time. Changes to this configuration will affect your access to old data.
  • We recommend changing this configuration before using Milvus for the first time.
  • Set an easy-to-identify root key prefix for Milvus if etcd already exists. We recommend setting it as "milvus-root".
  • "by-dev"

    MinIO/S3 Configurations

    Milvus supports MinIO and Amazon S3 as the storage engine for data persistence of insert log files and index files. Whereas MinIO is the de facto standard for S3 compatibility, you can configure S3 parameters directly under MinIO section. You can set these configurations in milvus.yaml under milvus/configs directory.

    You do not need to change this session if you use the default milvus-standalone-docker-compose.yml for third-party services.

    Configuration Description Default Value
    minio.address
    IP address of MinIO/S3
  • Environment variable: MINIO_ADDRESS
  • Access MinIO/S3 service with minio.address. minio.address and minio.port together generate the valid access to MinIO/S3.
  • MinIO preferentially acquires the valid address from the environment variable MINIO_ADDRESS when Milvus is booted up.
  • Default value applies when MinIO/S3 and Milvus are running on the same network.
  • Milvus 2.0 uses non-secure mode to access MinIO. Upcoming Milvus versions will support secure access to MinIO.
  • localhost
    minio.port
    Port of MinIO/S3
  • Environment variable: MINIO_ADDRESS
  • Access MinIO/S3 service with minio.address. minio.address and minio.port together generate the valid access to MinIO/S3.
  • MinIO preferentially acquires the valid port from the environment variable MINIO_ADDRESS when Milvus is booted up.
  • 9000
    minio.AccessKeyID
    MinIO/S3 key ID for authorized user access
  • Environment variable: MINIO_ACCESS_KEY
  • Access key ID that MinIO/S3 issues to authorized users. minio.accessKeyID and minio.secretAccessKey together are used for identity authentication to access the MinIO/S3 service.
  • This configuration must be set identical to the environment variable MINIO_ACCESS_KEY, which is necessary for booting up MinIO/S3. The default value applies to the MinIO/S3 service that boots up with the default docker-compose.yml provided by Milvus.
  • minioadmin
    minio.secretAccessKey
    MinIO/S3 encryption string
  • Environment variable: MINIO_SECRET_KEY
  • Secret key used to encrypt the signature string and verify the signature string on server. It must be kept strictly confidential and accessible only to the MinIO/S3 server and users.
  • This configuration must be set identical to the environment variable MINIO_SECRET_KEY, which is necessary for booting up MinIO/S3. The default value applies to the MinIO/S3 service that boots up with the default docker-compose.yml provided by Milvus.
  • minioadmin

    Server Address Configurations

    This session configures the IP address and port of the monitor request from Milvus. You can set these configurations in milvus.yaml.

    Configuration Description Default Value
    proxy.port TCP port for monitoring Milvus 19530

    System Behavior Configurations

    This session configures the system behaviors of Milvus. You can set these configurations in milvus.yaml, root_coord.yaml, data_coord.yaml, and data_node.yaml.

    Configuration Description Default Value
    queryNode.gracefulTime
    Minimum time before the newly inserted data can be searched
  • Unit: ms
  • Milvus executes this query command directly when the search message timestamp is earlier the query node system time.
  • When the search message timestamp is later than the query node system time, the search message waits for the query node system time to advance until the time difference between them is less than the value set in queryNode.gracefulTime, and then Milvus executes the query demand.
  • 1000
    rootcoord.minSegmentSizeToEnableIndex
    The minimum row count in a segment required for creating index
  • This parameter specifies the minimum row count in a log file required for creating segment index.
  • 1024
    datacoord.segment.maxSize
    Maximum size of a segment
  • Unit: MB
  • datacoord.segment.maxSize and datacoord.segment.sealProportion together determine if a segment can be sealed. Generally, the segment size ranges from 384 MB to 512 MB.
  • 512
    datacoord.segment.sealProportion
    Maximum proportion of a segment’s actual size comparing to datacoord.segment.maxSize
  • When actual proportion is greater than the set value, the corresponding segment can be sealed.
  • 0.75
    dataNode.flush.insertBufSize
    Maximum row count of a segment buffered in memory
  • Data node packs all buffered data into a binlog file and stores the file in MinIO/S3 when the row count of the data in memory exceeds this value.
  • Setting this parameter is associated with the data size. If it is set too small, the system stores data in small size too frequently. If it is set too large, the system's demand for memory will increase.
  • The default value applies to most scenarios. For a 128-dimensions floating-point vector, 32000 rows of data generate a binlog file of approximately 16 MB.
  • 32000

    Cluster System Configurations

    Milvus cluster maintains many system variables that configure the operation. All configurations can be set manually before server startup. Each configuration has a default value, which can be used directly.

    Log Configurations

    This session configures the system log output. Using Milvus generates a collection of logs. By default, Milvus uses logs to record information at debug or even higher level for standard output (stdout) and standard error (stderr). You can set these configurations in milvus.yaml.

    Configuration Description Default Value
    log.level
    Log level in Milvus
  • You can configure this parameter as debug, info, warn, error, panic, or fatal.
  • We recommend using debug level under test and development environments, and info level in production environment.
  • debug
    log.file.rootPath
    Root path to the log files
  • The default value is set empty, indicating to output log files to standard output (stdout) and standard error (stderr).
  • If this parameter is set to a valid local path, Milvus log will be written and stored in this path.
  • Set this parameter as the path that you have permission to write. We recommend using /tmp/milvus.
  • ""

    etcd Configurations

    etcd is the metadata engine supporting Milvus' metadata storage and access.

    You do not need to change this session if you use the default milvus-cluster-docker-compose.yml for third-party services.

    Configuration Description Default Value
    etcd.endpoints
    Endpoints of etcd
  • Environment variable: ETCD_ENDPOINTS
  • Access etcd service with etcd.endpoints.
  • etcd preferentially acquires valid address from environment variable ETCD_ENDPOINTS when Milvus is booted up.
  • You can change this parameter as the endpoints of your own etcd cluster.
  • localhost:2379
    etcd.rootPath
    Root of key prefix to etcd
  • Milvus stores data in etcd with this root key prefix.
  • Be careful with changing this configuration if you have used Milvus for a period of time. Changes to this configuration will affect your access to old data.
  • We recommend changing this configuration before using Milvus for the first time.
  • Set an easy-to-identify root key prefix for Milvus if etcd already exists. We recommend setting it as "milvus-root".
  • "by-dev"

    MinIO/S3 Configurations

    Milvus supports MinIO and Amazon S3 as the storage engine for data persistence of insert log files and index files. Whereas MinIO is the de facto standard for S3 compatibility, you can configure S3 parameters directly under MinIO section. You can set these configurations in milvus.yaml.

    You do not need to change this session if you use the default milvus-cluster-docker-compose.yml for third-party services.

    Configuration Description Default Value
    minio.address
    IP address of MinIO/S3
  • Environment variable: MINIO_ADDRESS
  • Access MinIO/S3 service with minio.address. minio.address and minio.port together generates the valid access to MinIO/S3.
  • MinIO preferentially acquires the valid address from the environment variable MINIO_ADDRESS when Milvus is booted up.
  • Default value applies when MinIO/S3 and Milvus are running on the same network.
  • Milvus 2.0 uses non-secure mode to access MinIO. Upcoming Milvus versions will support secure access to MinIO.
  • localhost
    minio.port
    Port of MinIO/S3
  • Environment variable: MINIO_ADDRESS
  • Access MinIO/S3 service with minio.address. minio.address and minio.port together generate the valid access to MinIO/S3.
  • MinIO preferentially acquires the valid port from the environment variable MINIO_ADDRESS when Milvus is booted up.
  • 9000
    minio.AccessKeyID
    MinIO/S3 key ID for authorized user access
  • Environment variable: MINIO_ACCESS_KEY
  • Access key ID that MinIO/S3 issues to authorized users. minio.accessKeyID and minio.secretAccessKey together are used for identity authentication to access the MinIO/S3 service.
  • This configuration must be set identical to the environment variable MINIO_ACCESS_KEY, which is necessary for booting up MinIO/S3. The default value applies to the MinIO/S3 service that booted up with the default docker-compose.yml provided by Milvus.
  • minioadmin
    minio.secretAccessKey
    MinIO/S3 encryption string
  • Environment variable: MINIO_SECRET_KEY
  • Secret key used to encrypt the signature string and verify the signature string on server. It must be kept strictly confidential and accessible only to the MinIO/S3 server and users.
  • This configuration must be set identical to the environment variable MINIO_SECRET_KEY, which is necessary for booting up MinIO/S3. The default value applies to the MinIO/S3 service that booted up with the default docker-compose.yml provided by Milvus.
  • minioadmin

    Pulsar Configurations

    Pulsar is the underlying engine supporting Milvus' reliable storage and pub/sub of log streams. You can set these configurations in milvus.yaml.

    You do not need to change this session if you use the default milvus-cluster-docker-compose.yml for third-party services.

    Configuration Description Default Value
    pulsar.address
    IP address of Pulsar
  • Environment variable: PULSAR_ADDRESS
  • Access Pulsar service with pulsar.address. pulsar.address and pulsar.port together generates the valid access to Pulsar. Pulsar preferentially acquires the valid address from the environment variable PULSAR_ADDRESS when Milvus is booted up.
  • The default value applies when Pulsar and Milvus are running on the same network.
  • localhost
    pulsar.port
    Port of Pulsar
  • Environment variable: PULSAR_ADDRESS
  • Access Pulsar service with pulsar.port. pulsar.address and pulsar.port together generates the valid access to Pulsar. Pulsar preferentially acquires the valid address from the environment variable PULSAR_ADDRESS when Milvus is booted up.
  • 6650

    Server Address Configurations

    This session configures the IP address and port of the monitor request from Milvus. You can set these configurations in milvus.yaml.

    Configuration Description Default Value
    rootCoord.address
    TCP/IP address of root coordinator If you set this parameter as 0.0.0.0, root coordinator monitors all IPv4 addresses.
    localhost
    rootCoord.port TCP port of root coordinator 53100
    proxy.port TCP port for monitoring Milvus 19530
    queryCoord.address
    TCP/IP address of query coordinator If you set this parameter as 0.0.0.0, query coordinator monitors all IPv4 addresses.
    localhost
    queryCoord.port TCP port of query coordinator 19531
    queryNode.port TCP port of query node 21123
    indexCoord.address TCP/IP address of index coordinator localhost
    indexCoord.port TCP port of index coordinator 31000
    indexNode.port TCP port of index node 21121
    dataCoord.address TCP/IP address of data coordinator localhost
    dataCoord.port TCP port of data coordinator 13333
    dataNode.port TCP port of data node 21124

    System Behavior Configurations

    This session configures the system behaviors of Milvus. You can set these configurations in milvus.yaml, root_coord.yaml, data_coord.yaml, and data_node.yaml.

    Configuration Description Default Value
    queryNode.gracefulTime
    Minimum time before the newly inserted data can be searched
  • Unit: ms
  • Milvus executes this query command directly when the search message timestamp is earlier the query node system time.
  • When the search message timestamp is later than the query node system time, the search message waits for the query node system time to advance until the time difference between them is less than the value set in queryNode.gracefulTime, and then Milvus executes the query demand.
  • 1000
    rootcoord.minSegmentSizeToEnableIndex
    The minimum row count in a segment required for creating index
  • This parameter specifies the minimum row count in a log file required for creating segment index.
  • 1024
    datacoord.segment.maxSize
    Maximum size of a segment
  • Unit: MB
  • datacoord.segment.maxSize and datacoord.segment.sealProportion together determine if a segment can be sealed. Generally, the segment size ranges from 384 MB to 512 MB.
  • 512
    datacoord.segment.sealProportion
    Maximum proportion of a segment’s actual size comparing to datacoord.segment.maxSize
  • When actual proportion is greater than the set value, the corresponding segment can be sealed.
  • 0.75
    dataNode.flush.insertBufSize
    Maximum row count of a segment buffered in memory
  • Data node packs all buffered data into a binlog file and stores the file in MinIO/S3 when the row count of the data in memory exceeds this value.
  • Setting this parameter is associated with the data size. If it is set too small, the system stores data in small size too frequently. If it is set too large, the system's demand for memory will increase.
  • The default value applies to most scenarios. For a 128-dimensions floating-point vector, 32000 rows of data generate a binlog file of approximately 16 MB.
  • 32000