源码编译部署篇(二)源码编译milvus成功后如何启动standalone并调试成功!

Milvus启动和调试

0 前言

由于Milvus官方文档只提及如何使用docker安装部署Milvus,关于源码安装方式篇幅较少,因此,我整理撰写了如何通过源码编译方式成功安装Milvus,详见此篇。之所以选择这种复杂的安装方式,可以调试源码进而熟悉Milvus如何搭建整个框架支持AI上层应用功能。根据上篇步骤部署虽然可以成功,然而,我却不能成功启动Milvus服务,这个问题困扰了一两天,现在终于得以解决并能成功调试Milvus源码。接下来,分为三个部分介绍如何启动和成功调试。

1 Milvus启动

Milvus服务启动主要分为两种模式,一种是单机(Milvus Standalone),另一种是集群(Milvus Cluster)。我选择单机模式启动,单机指的是不提供网络功能的数据库。

根据下图的用法提示,启动命令如下:

启动命令:

bash 复制代码
./bin/milvus run standalone

可能每个人服务器性能、赋予权限等都不同,不一定会遇到和我一样无法成功启动的问题。这里记录我遇到的问题以及解决方案。

【问题描述】出现Aborted问题

【问题分析】

这个问题困扰了我两天,后仔细阅读Milvus官方文档发现,Milvus启动的前提依赖于三个外部服务,即etcd、minio和Pulsar。版本要求如下:

未提前安装这三个外部服务的可以先提前安装,根据我上篇部署博客步骤安装的话,在此步应只有Pulsar未安装。

【解决方法】

安装Pulsar服务

因此,这里只记录安装Pulsar服务步骤:

  1. 下载2.8.2版本
bash 复制代码
wget https://archive.apache.org/dist/pulsar/pulsar-2.8.2/apache-pulsar-2.8.2-bin.tar.gz
  1. 解压
bash 复制代码
tar xvfz apache-pulsar-2.8.2-bin.tar.gz
  1. 进入目录启动Pulsar服务
bash 复制代码
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

查看服务是否启动命令:

bash 复制代码
sudo netstat -tulnp | grep 9091

显示如下信息,表示启动成功:

bash 复制代码
tcp6       0      0 :::9091       

2 Milvus调试

编写launch.json

bash 复制代码
{
    "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权限。

bash 复制代码
sudo chown -R xxx:xxx /var/lib/milvus
相关推荐
会发paper的学渣3 天前
milvus和attu客户端的安装
milvus
Zilliz Planet3 天前
SentenceTransformers×Milvus:如何进行向量相似性搜索
milvus
强哥之神3 天前
向量搜索工具之 Milvus vs. Elastic
人工智能·机器学习·语言模型·llama·milvus·向量搜索·搜索数据库
花千树-01017 天前
Milvus - GPU 索引类型及其应用场景
运维·人工智能·aigc·embedding·ai编程·milvus
花千树-01020 天前
Milvus - 时间同步机制详解
aigc·embedding·ai编程·milvus
晨曦_子画20 天前
将 IBM WatsonX 数据与 Milvus 结合使用,构建用于知识检索的智能 Slack 机器人
机器人·milvus
花千树-01021 天前
Milvus - 标量字段索引技术解析
人工智能·aigc·embedding·ai编程·milvus·db
花千树-01021 天前
深入探讨 Tantivy 及其在 Milvus 中的应用:倒排索引库对比与选择
elasticsearch·全文检索·lucene·milvus·es
07122109821 天前
向量库Milvus异常挂了,重新启动
java·开发语言·milvus
花千树-01025 天前
Milvus - 四个主要时间戳参数
aigc·embedding·ai编程·milvus