Milvus启动和调试
- 0 前言
- 1 Milvus启动
- 【问题描述】出现Aborted问题
- 【问题分析】
- 【解决方法】
- 安装Pulsar服务
- 执行单机启动命令解决
- 监听端口号
- 2 Milvus调试
- 编写launch.json
- 验证单例调试成功
- 3 遇到的问题汇总
- 问题1
- 问题2:Permission denied
0 前言
由于Milvus官方文档只提及如何使用docker安装部署Milvus,关于源码安装方式篇幅较少,因此,我整理撰写了如何通过源码编译方式成功安装Milvus,详见此篇。之所以选择这种复杂的安装方式,可以调试源码进而熟悉Milvus如何搭建整个框架支持AI上层应用功能。根据上篇步骤部署虽然可以成功,然而,我却不能成功启动Milvus服务,这个问题困扰了一两天,现在终于得以解决并能成功调试Milvus源码。接下来,分为三个部分介绍如何启动和成功调试。
1 Milvus启动
Milvus服务启动主要分为两种模式,一种是单机(Milvus Standalone),另一种是集群(Milvus Cluster)。我选择单机模式启动,单机指的是不提供网络功能的数据库。
根据下图的用法提示,启动命令如下:
启动命令:
./bin/milvus run standalone
可能每个人服务器性能、赋予权限等都不同,不一定会遇到和我一样无法成功启动的问题。这里记录我遇到的问题以及解决方案。
【问题描述】出现Aborted问题
【问题分析】
这个问题困扰了我两天,后仔细阅读Milvus官方文档发现,Milvus启动的前提依赖于三个外部服务,即etcd、minio和Pulsar。版本要求如下:
未提前安装这三个外部服务的可以先提前安装,根据我上篇部署博客步骤安装的话,在此步应只有Pulsar未安装。
【解决方法】
安装Pulsar服务
因此,这里只记录安装Pulsar服务步骤:
- 下载2.8.2版本
wget https://archive.apache.org/dist/pulsar/pulsar-2.8.2/apache-pulsar-2.8.2-bin.tar.gz
- 解压
tar xvfz apache-pulsar-2.8.2-bin.tar.gz
- 进入目录启动Pulsar服务
cd apache-pulsar-2.8.2
bin/pulsar standalone
启动成功后,如果看到一堆日志[INFO]提示且味异常中断,则表示启动成功。
执行单机启动命令解决
不出意外,还是失败!(这是肯定的啦~)
接下来,要根据启动报错日志来解决问题,结果导向问题。
下图是我遇到的问题,我将此部分总结在“3 遇到的问题汇总”,故不赘述,具体可自行跳转到指定位置查看。
成功启动界面如下:
监听端口号
到这一步,所有的问题均解决了。查看端口号,若正在监听,则表示启动成功!可以逐一查询以下端口号是否正在监听:
- Pulsar-port:6650/ 2181/3181/
- milvus-server-port:19530
- milvus-HTTP:9091
- etcd-port:2379/2380
- minio-port:9000
查看服务是否启动命令:
sudo netstat -tulnp | grep 9091
显示如下信息,表示启动成功:
tcp6 0 0 :::9091
2 Milvus调试
编写launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Milvus_cp1.1",
"type": "cppdbg",
"request": "attach",
"program": "~/milvus_cp1.1/bin/milvus",
"args": [], // Any arguments the program needs
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "", // Task to run before debugging, like 'build'
"miDebuggerPath": "/usr/bin/gdb" // Path to gdb
}
]
}
验证单例调试成功
启动成功部署调试环境后,下载官网提供的python-sdk文件,运行成功界面如下:
打好断点后,启动milvus standalone,会跳转到断点位置,调试成功!
3 遇到的问题汇总
问题1
【问题描述】[ERROR] [datacoord/service.go:150] [“grpc server failed to listen error”] [error=“listen tcp :13333: bind: address already in use”] [stack=“github.com/milvus-io/milvus/internal/distributed/datacoord.(*Server).startGrpcLoop\n\t/home/b8402/22_raowenjing/milvus_cp1.1/internal/distributed/datacoord/service.go:150”]
【解决方法】直接杀掉占用13333的端口进程
再次运行./bin/milvus run standalone
【结果】没有报错。
问题2:Permission denied
[FATAL] [msgstream/mq_factory.go:16] [“fail to init rocksmq”] [error=“mkdir /var/lib/milvus: permission denied”]
【解决方法】更改权限。因为我是普通用户不能访问root权限。
sudo chown -R xxx:xxx /var/lib/milvus