OCP部署提示内存不足(实际是有充足内存的)

OCP部署失败,提示如下:
[ERROR] resource not enough: memory (Avail: 1.0G, Need: 4.0G)

登录服务器free -g查看实际内存还是非常充足的

平台是通过什么命令或方式去获取系统的可用内存的呢?

是通过什么方式部署的?是obd web方式吗?请传下obd日志

您好,你这个free -h 可以看一下么



上面是日志

【解决方案】
在社区中找到的解决方案是:alter system set memory_limit = ‘16GB’;
我是通过obd web方式部署的,在OB启动完后马上通过obclient登录到数据库并执行alter system set memory_limit = ‘16GB’; 来进行调整,后面ocp才能部署成功。具体为什么获取到可用内存是1G,实在是个迷

已解决,但可以理解为是临时解决,具体看上面的回复,谢谢

我昨天 和你用到同样的问题 ,他们最后启动的时候检测内存了。memory_limit -sysmemory_limit - 所有业务租户内从=1G , 但是您给ocp-server分配的是4G ,因此报这个错误 ,
ocp部署报错内存失败,报错信息有误 我的帖子 ,但是他们似乎没懂我的意思 , 今天看到你的单子了。

这个回复应该是有点问题,目前再一次跟同学确定中,请稍等 :cry:

根据你提供的信息推测 你用的obd 版本应该是低于2.9.0的。因为在obd V2.9.0 里面我们加入了租户资源预检查逻辑,这个会在预检查阶段被拦截的。推荐用2.9.0及以上版本

这里指的是 ob 内部当前可以分配的内存 只有1g ,但是建租户需要4g。

ob可分配内存 = memory_limit - system_memory - sys租户内存 - 业务租户内存
sys租户内存(需要明确和system_memory 不是同一个)= (memory_limit - system_memory)* 0.25 ) 不足2G 按2G 最大不超过16G

部署ocp需要可分配内存 >= ocp_meta_tenant memory_size +ocp_monitor_tenant memory_size

ocp 部署还有一个应用的需要的内存 (ocp java进程需要的内存)这个是从服务器内存获取的

当前部署的版本是:
OCP:ocp-all-in-one-4.2.1-20231127205908.el7.x86_64.tar.gz

安装后obd --version的版本是:
OceanBase Deploy: 2.4.0

部署服务器资源情况是:
Centos7.9 16C 32G

也试用过80G内存的机器来部署,分配给ocp-server的内存16G,也得到相同的报错也是可用内存为1G还是2G(free -h查看实际内存还是非常多的)

memory_limit设置是多少呢,
ocp的元数据库memory_limit需要大于system_memory+sys租户的内存+ocp_meta租户的内存+ocp_monitor租户的内存

1 个赞

我是以ocp_installer.sh 这种方式部署, 也是出现内存不足的问题,我想问下observer的memory_limit在安装前是否可以在哪里进行设置?或者说是怎么获取到的默认值。64G的操作系统,获取到的默认值是17G。

你报错的内存和 free -g 的内存你没有任何关系。 和你meta db 的memory_limit 有关系。上面回复的你可以再看下计算公式。
由于你用的obd 的版本比较低 建议你升级obd,这样会在预检查阶段就会检查出来 不用到部署阶段。
1.在联网情况下 执行
obd mirror enable remote
obd update

2.不联网情况下
官网下载最新的421 ocp all in one 包,或者当前最新的的ocp all in one


然后更新升级

推荐使用 ocp all in one 方式部署。功能更强大,可以在白屏上直接配置 metadb 的memory limit.

容易忽视的是 sys 租户的内存,这个没法配置,是obd 自动计算的。 计算公式的是
(memory_limit - system_momory) * 0.25 不足2G 按2G 计算,超过16G 按16G 计算。

memory_limit >= system_momory + sys 租户内存 (根据上面计算公式计算) +业务租户内存(如果通过已有metadb 集群部署可能有)+ ocp monitor 租户内存 + ocp meta 租户内存

满足这个公式时 就不会因为租户内存不足报错。

另外如果ocp 和meta db 在一台机器 需要 关注 free -g 的 可用内存需要 >= memory_limit + ocp java 进程内存的内存

V3版本不能自定义memory_limit吧?

ocp_installer.sh 应该是不支持的。这个版本不再迭代更新 替代产品就是obd. ocp all in one里面用的就是obd