共计 1744 个字符,预计需要花费 5 分钟才能阅读完成。
技术背景
Milvus 是一款开源的向量数据库,专为 AI 应用设计,支持高效的向量相似度搜索。与传统的 Docker 部署相比,裸机部署 Milvus 可以避免容器化带来的性能开销,同时允许我们进行更深度的定制化编译优化,尤其适合生产环境中的高性能需求场景。

裸机部署的核心优势包括:
- 性能优化 :直接运行在物理机上,减少容器虚拟化层的性能损耗。
- 资源控制 :可以更精细地管理 CPU、内存和 GPU 资源。
- 定制化编译 :针对特定硬件(如 GPU 型号)进行优化编译,提升查询性能。
环境准备
CentOS 7 基线要求
- 操作系统 :CentOS 7 最小化安装(推荐内核版本 3.10.0-1160 或更高)。
- 编译器 :GCC 7.5 或更高版本(支持 C++17)。
- Python:Python 3.6+(用于运行测试脚本)。
依赖库清单
Milvus 的编译依赖较多,以下是关键依赖及其推荐版本:
- protobuf:3.14.0
- grpc:1.38.0
- boost:1.65.1
- OpenBLAS:0.3.10
- CUDA(可选):11.0+(如需 GPU 加速)
安装依赖的命令如下(需 root 权限):
sudo yum install -y epel-release
sudo yum install -y gcc-c++ cmake3 git make libcurl-devel openssl-devel
源码编译实战
1. 获取源码
git clone https://github.com/milvus-io/milvus.git
cd milvus
2. 编译依赖库
Milvus 提供了脚本自动编译依赖库,运行以下命令:
./scripts/install_deps.sh
如果遇到依赖冲突,可以尝试强制安装:
./scripts/install_deps.sh --force
3. 编译 Milvus
mkdir build
cd build
cmake3 ..
make -j$(nproc)
编译完成后,可执行文件会生成在 bin 目录下。
4. 配置目录权限
Milvus 需要读写存储目录,确保以下目录权限正确:
sudo mkdir -p /var/lib/milvus/data
sudo chown -R $USER:$USER /var/lib/milvus
性能调优
1. 索引参数优化
Milvus 支持多种索引类型(如 IVF_FLAT、HNSW),以下是一个 IVF_FLAT 索引的配置示例:
index_type: IVF_FLAT
params:
nlist: 4096
2. 内存分配优化
调整系统参数以优化内存使用:
sudo sysctl -w vm.max_map_count=262144
避坑指南
1. 解决 GLIBCXX_3.4.20 缺失问题
如果遇到以下错误:
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
解决方法:
sudo yum install -y devtoolset-7-gcc-c++
2. 多版本 CUDA 共存配置
如果系统有多个 CUDA 版本,可以通过环境变量指定使用的版本:
export PATH=/usr/local/cuda-11.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH
验证方案
1. 连通性测试
使用 pymilvus 进行测试:
from pymilvus import connections, utility
connections.connect("default", host="localhost", port="19530")
print(utility.get_server_version())
2. 压力测试
使用 milvus_benchmark 工具进行性能测试:
./milvus_benchmark -h localhost -p 19530 -d /path/to/test/data
总结
裸机部署 Milvus 虽然步骤较多,但可以充分发挥硬件性能,适合对延迟和吞吐量要求较高的生产环境。通过本文的步骤,你应该已经成功在 CentOS 7 上完成了 Milvus 的编译和调优。如果在实践中遇到问题,可以参考 Milvus 的官方文档或社区支持。
希望这篇指南能帮助你顺利部署和优化 Milvus,为你的 AI 应用提供强大的向量搜索能力!
正文完
发表至: 未分类
近两天内
