Oceanbase的集群资源如何分配

【 使用环境 】测试环境
【 OB or 其他组件 】
OB
【 使用版本 】
v4.2.3_CE
【问题描述】清晰明确描述问题
我有三台内存为30GB的机器部署Oceanbase的集群,在部署步骤中选择的是最大占用配置,但是在搭建后,创建租户,创建zone副本的时候仍然会有内存不够的现象。

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

1 个赞

您的问题可能存在误解,实际上据我所知,OceanBase 集群的资源分配需要考虑到多个方面,包括但不限于机器的硬件配置、租户的资源需求以及集群的扩展性。根据您提供的信息,您目前使用的是三台内存为 30GB 的机器来部署 OceanBase 集群,并且在创建租户时遇到了内存不足的问题。 [1], [6]

1. 了解内存分配的基本原则

OceanBase 集群的内存分配主要依赖于租户的配置。每个租户都有自己的资源单元(Resource Unit),该单元定义了租户能够使用的 CPU、内存等资源的上限。 [8]

2. 分析当前配置

根据您提供的截图信息,当前每个 Zone 的 Unit 规格为 2 核心 2GB 内存,这似乎已经接近或达到了您机器的极限。考虑到 OceanBase 需要一定的系统开销,这样的配置可能确实会导致内存不足的情况发生。

3. 解决方案建议

a. 增加机器的内存

由于您的机器内存较小,建议增加每台机器的内存以满足更高的资源需求。 [2], [3], [5] 这些文档中提到的硬件配置均远高于您当前的配置,表明在低内存环境下部署 OceanBase 可能会遇到困难。

b. 调整租户配置

如果您暂时无法增加硬件资源,可以尝试调整租户的配置,降低每个 Unit 的内存需求。例如,您可以减少 MEMORY_SIZE 的值。 [1] 提供了具体的 SQL 示例,展示了如何调整租户的资源单元配置。

ALTER RESOURCE UNIT test_unit MIN_CPU = 2, MAX_CPU = 2, MEMORY_SIZE = '10G', MAX_IOPS = 10000, MIN_IOPS = 10000;

您可以根据实际情况调整 MEMORY_SIZE 的值,使其更符合您的硬件条件。

c. 优化资源使用

除了调整租户配置外,还可以通过优化应用程序的查询逻辑等方式来减少内存的使用。 [6] 提到 OceanBase 支持多租户架构,可以根据业务需求灵活分配资源。

4. 注意事项

  • 在调整配置时,请确保不会影响到现有业务的正常运行。
  • 考虑到未来业务的增长,建议提前规划好集群的扩展策略。

希望以上建议对您有所帮助。如果还有其他问题,请随时提问。

详情请参考:

  1. 在您开始前
  2. OceanBase Sysbench 性能测试报告
  3. OceanBase TPC-C 性能测试报告
  4. 使用命令行部署 OceanBase 数据库生产环境
  5. OceanBase TPC-H 性能测试报告
  6. 内存管理概述
  7. OceanBase 数据库 TPC-C 测试
  8. 体验多租户特性
  9. OceanBase 云平台 Express (OCP Express)
1 个赞

估计你的system_memory参数给的比较大。。可以看看OCP上的集群的资源管理页面还剩下多少资源可以分配

1 个赞

我是按照默认部署的方式去搭建的集群,哪里可以将这个参数设置的小一点吗,或者说重新搭建哪里需要注意一下

1 个赞

ocp页面上或者命令行上先查下这个参数是多少吧。。这个参数要是太大可以搞小点

1 个赞

根据您的描述,您是通过默认方式部署了 OceanBase 集群,但现在遇到了资源分配上的问题。为了更好地管理和调整集群资源,您可以参考以下几个步骤来解决这个问题:

1. 查看当前集群资源使用情况

首先,登录 OCP 控制台,查看集群的资源水位。这可以帮助您了解当前集群的资源使用情况,从而判断是否真的存在资源不足的问题。 [2]

2. 调整租户资源单元配置

如果发现资源确实紧张,您可以通过调整租户的资源单元(Resource Unit)配置来缓解这一问题。具体步骤如下:

a. 登录 OCP 控制台

  1. 登录 OCP 控制台。
  2. 在左侧导航栏中选择 集群,进入集群页面。
  3. 选择待操作的集群并单击其集群名。
  4. 在显示的页面的左侧导航栏上,单击 参数管理

b. 修改租户资源单元配置

  1. 参数管理 页面,找到与租户资源相关的参数。
  2. 修改租户的资源单元配置,例如降低 MEMORY_SIZE 的值。
  3. 保存更改。

3. 重新部署集群时的注意事项

如果您决定重新部署集群,以下是需要注意的一些事项:

a. 选择合适的资源规格

在创建集群时,选择合适的资源规格非常重要。确保为每个 Zone 分配足够的资源,同时也要考虑到集群的整体资源限制。 [3]

b. 自定义资源配置

在创建集群的过程中,您可以选择自定义资源配置。这样可以根据实际需求调整各项资源的分配。 [3]

c. 监控资源使用情况

部署完成后,持续监控集群的资源使用情况,及时调整资源分配以避免资源不足的问题。

4. 具体操作步骤

a. 创建集群时的资源配置

  1. 登录 OCP 控制台。
  2. 在左侧导航栏上,单击 集群
  3. 集群 页面右上角,单击 创建集群
  4. 创建集群 页面,设置集群的基础信息。
  5. 创建集群 页面,设置集群的部署模式信息。
  6. (可选)在 创建集群 页面,配置集群参数。
  7. (可选)在 创建集群 页面,通过自定义设置,对路径及端口进行配置。 [3]

b. 修改租户资源单元配置

  1. 登录 OCP 控制台。
  2. 在左侧导航栏中单击 租户,并在 租户列表 中单击租户名称。
  3. 在显示的页面的左侧导航栏上,单击 参数管理
  4. 参数列表 页面,找到与租户资源相关的参数。
  5. 修改租户的资源单元配置,例如降低 MEMORY_SIZE 的值。
  6. 保存更改。

希望以上建议对您有所帮助。如果还有其他问题,请随时提问。 [3]

检索到的文档如下:

  1. 查看参数列表
  2. 查看集群详情
  3. 使用 OCP 部署三副本 OceanBase 集群
  4. 检查集群配置项

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

1 个赞


这个图显示没多少了,但是我的机器的内存还有很多,没有充分利用上,可以提供一下查询这个参数的sql吗

1 个赞

不是这个地方,你看看这个图。。能展示分配了多少资源出来还剩多少资源

https://www.oceanbase.com/docs/common-ocp-1000000001127199

1 个赞


这个zone的内存可以扩充吗,我机器有30GB的内存,但是这里只用了7GB

1 个赞

ocp 里选取集群,查看集群参数 memory
具体看下面几个参数:

1 个赞

可以把这 memory_limit_percentage调成90, system_memory参数调成10G
这样就能多点内存分配给租户,这两个都是集群参数在页面上就能改,改好后重新创建租户就行了

https://www.oceanbase.com/docs/common-ocp-1000000001127059


已经修改此处的值,但是仍旧一个zone只能创建一个租户,这还是需要硬件条件提升吗

最简单的就是调整下主机内存,不过system_memory确实还能再小点 :joy:

好的好的,谢谢