赞
踩
作为一个资深码农(自称☺),开始网上找教程安装部署milvus,找了一大轮都是使用Docker部署的方法(也是milvus官方文档推荐),自己按照milvus官方的办法先是在我的开发电脑安装了Docker(因为虚拟化的问题也遇到不少坑,这个可以自行搜索解决),然后安装milvus的过程也很顺利,用attu可以成功登录进去了。但问题是项目是部署在云服务器上的,云服务器本身就是虚拟机,咨询了相关服务商后被告知无法二次虚拟化,连Docker都跑不起来,只能另谋蹊径。
既然用不了Docker进行部署,那可不可以直接绕过Docker,直接在window系统进行部署milvus呢?经过一段时间的网络冲浪,终于找到了办法:window版milvus,这个是window版的milvus,在:milvus/releases下载最新版本,按照文档:在 Windows 上运行 Milvus 2.0的方法终于成功在云服务器上成功启动了milvus!以下是文档的中文翻译截图
项目在生产跑的时候一天会产生几千的人脸信息写入milvus,过了一段时间之后发现milvus崩掉了,从报错信息上看是etcd出现了问题 Error: etcdserver: mvcc: database space exceeded
,又是一通网络冲浪,查出来大概就是说,默认情况下,etcd 会保留所有数据的修改历史记录,直到数据量超过空间配额而无法提供服务为止,然后默认的分配空间是2g,需要处理一下。
和老朋友度娘和谷兄玩了一会后,找到的信息都是以下这种处理方式:
#使用API3
export ETCDCTL_API=3
#查看告警信息,告警信息通常 memberID:8630161756594109333 alarm:NOSPACE
etcdctl --endpoints=http://127.0.0.1:2379 alarm list
#获取当前版本
rev=$(etcdctl --endpoints=http://127.0.0.1:2379 endpoint status --write-out=“json” | egrep -o ‘“revision”:[0-9]’ | egrep -o '[0-9].’)
#压缩掉全部旧版本
etcdctl --endpoints=http://127.0.0.1:2379 compact $rev
#整理多余的空间
etcdctl --endpoints=http://127.0.0.1:2379 defrag
#取消告警信息
etcdctl --endpoints=http://127.0.0.1:2379 alarm disarm
这应该是linux的代码与我们window的环境不符,然后etcdctl这个工具在window版的milvus中也没有,只能去etcd下载了,我下载的是etcd-v3.5.11-windows-amd64版本,cd进入etcdctl.exe的目录,试了下可以用,下面是解决问题的操作步骤:
etcdctl endpoint status --write-out="table"
DB SIZE显示的容量超过2g(默认的)就会报错用不了,我这里是正常的,其中RAFT INDEX
显示的值,其实就是revision
的值,这个值在etcd每次写入操作的时候都会增大。etcdctl compact %revision%
%revision%
用你刚刚查出来的RAFT INDEX
的值代替,比如这里我应该输入etcdctl compact 31873
etcdctl defrag
清理磁盘碎片etcdctl alarm disarm
清除警告run_etcd.bat
即可ps:网上还有很多设置自动压缩的教程,但是我配置之后过段时间还是会爆空间,后面的办法是创建一个window定时任务,每天定时运行清理一下,后面再出一篇详细说明下。
如果etcd爆了,这个配置亲测可以生效 (生效个屁,见2024-01-23补充)
auto-compaction-mode: revision
和auto-compaction-retention: 1000
,上面那个注释掉的配置试了好像没什么用,注释了。爆了,还是爆了(
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。