ocp部署报错内存失败,报错信息有误

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)


OBD-4366: There is not enough memory

问题:租户创建完毕,内存还剩下1G ,我的memory_limit 是 12G 三个租户每个2G ,一个system_memory 5G ,正好剩下1G , 我给的ocp-server的服务是4G , 我的服务器是 64G ,结果报库错误。 是不是应该直接从服务器拿走内存, 而不应该被memory_limit参数限制呢?

1 个赞

memory_limit_percentage是百分比参数直接从服务器拿走内存,memory_limit是固定限制需要手动调整

2 个赞

1.通过SELECT * FROM oceanbase.GV$OB_SERVERS或show parametres like 'memory_limit’查看我们的memory_limit设置的大小

2.通过show parametres like ‘system_memory’;确认system_memory的大小。

3.租户可以分配的内存=memory_limit-system_memory

 注意:租户可以分配的内存=用户租户内存+系统租户内存

4.系统租户是 OceanBase 数据库的集群管理员为安装 OceanBase 数据库时自动创建。V4.2.1 版本前,系统租户实际可使用的内存上限为 sys_unit_config.memory_size。从 V4.2.1 版本开始,系统租户实际可使用的内存上限为:hidden_sys_memory + sys_unit_config.memory_size。

  • sys_unit_config.memory_size 的值由资源规格 sys_unit_config 中的 memory_size 决定。sys_unit_config 是系统租户默认的资源规格,其默认的内存资源为最小资源。由于系统租户也是一个正常的租户,故可以通过 ALTER RESOURCE 语句修改 sys_unit_config 中 memory_size 的值。
  • hidden_sys_memory 的值由隐藏配置项 _hidden_sys_tenant_memory 控制。隐藏配置项 _hidden_sys_tenant_memory 的默认值为 0G,表示系统会按照一定的规则进行自适应分配 hidden_sys_memory 的值。不建议修改隐藏配置项 _hidden_sys_tenant_memory 的值。
    系统租户查看信息

查看sys_unit_config.memory_size参数
select name,concat(round(memory_size/1024/1024/1024),“G”) memory_size from DBA_OB_UNIT_CONFIGS where name=‘sys_unit_config’;

2 个赞


我这报的内存不足 是这个进程需要 4G , 但是memory_limit -system_memory-其他租户内容=1G 。OCP的进程内存 也需要满足 memory_limit的 限制吗??

1 个赞

你这是怎么规划搭建的 具体说一下?还有ocp在一起搭建的么?还是分开搭建的?

1 个赞

ocp + ob(cop的数据库) 都在一台机器上 机器64G 内存

1 个赞

我的意思是他不应该 在memory_limit 内存里面考虑内存够不够的问题吧 ?

1 个赞

你是用obd白屏化搭建的ocp么?还是直接用ocp的包搭建的ocp

1 个赞

ocp-all-in-one这个程序报 版本是4.2.1
image

1 个赞

OBD-4366:There is not enough {resource}. (Avail: {avail}, need: {need})

错误原因:metadb 资源不足。

解决方法:根据部署方式的不同有如下两种解决方法。

  • 命令行部署时,执行 obd cluster edit-config <deploy name> 命令打开配置文件,调大 oceanbase-ce 组件下 memory_limitcpu_countlog_disk_size 配置项的值,保存后执行命令行中输出的命令使修改生效。
  • 图形化界面部署时,可单击 上一步,在 MetaDB 配置 页面,打开 集群配置 中的 更多配置,增大 memroy_limitcpu_countlog_disk_size 配置项的值。
1 个赞

根据你的截图分析,你这应该是通过已有 metadb 部署 ocp. 你框柱报错的上面一行日志是在查询你的meta db 当前剩余的可分配内存,查出来是 1G。 而创建 ocp 的 meta 租户 + monitor 租户一共需要4G

看你的计算逻辑 你缺少了 sys 租户内存的计算。一下是具体的计算逻辑:

ob可分配内存 = memory_limit - system_memory - sys租户内存 - 业务租户内存

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

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

2 个赞