使用OCP安装,报错OBD-4368只有3G内存,但实际有32G

【 使用环境 】测试环境
【 OB or 其他组件 】OCP
【 使用版本 】ocp-all-in-one-4.3.2-20241012145836.el7.x86_64.tar.gz 使用Web安装
【问题描述】报错OBD-4368
【复现路径】
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

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

【检查项】oceanbase-ce:ocp tenant memory
【报错内容】OBD-4368: The allocated memory for the provided meta database is currently insufficient for creating a tenant. Available: 3G, Need: 12G(Available = memory_limit [6G] - system_memory [1G] - sys tenant memory [2G]. Need = ocp meta tenant memory [4G] + ocp_monitor_tenant_memory [8G]).

一开始OCP和2个observer都是8G内存,看到报错后OCP改成32G,报错依旧是“Available: 3G”。而observer后来升级到16G。报错内容也从“Available: 3G”变成了Available: 6G。难道这里计算的是observer的内存?

根据文档库中的信息,您的问题涉及到 OCP 安装过程中关于内存配置的错误。具体来说,错误 OBD-4368 表示分配给元数据库(MetaDB)的内存不足以创建租户。以下是详细的分析和解决方案:

问题分析

  1. 错误信息解析

    • 报错内容:OBD-4368: The allocated memory for the provided meta database is currently insufficient for creating a tenant. Available: 3G, Need: 12G(Available = memory_limit [6G] - system_memory [1G] - sys tenant memory [2G]. Need = ocp meta tenant memory [4G] + ocp_monitor_tenant_memory [8G]).
    • 解释:当前可用内存为 3G,但创建租户需要 12G 内存。计算公式为:Available = memory_limit [6G] - system_memory [1G] - sys tenant memory [2G],而 Need = ocp meta tenant memory [4G] + ocp_monitor_tenant_memory [8G]
  2. 内存配置检查

    • 您提到最初 OCP 和两个 Observer 都是 8G 内存,后来 OCP 改为 32G,但报错依旧显示 Available: 3G
    • 后来 Observer 升级到 16G,报错内容变为 Available: 6G

解决方案

  1. 检查 OCP 机器的内存配置

    • 根据文档片段 4,OCP-Server 机器的内存配置建议如下:
      • 管理的机器数量 ≤ 10 台:4C 8GiB
      • 管理的机器数量 ≤ 50 台:8C 16GiB
      • 管理的机器数量 ≤ 100 台:16C 32GiB
      • 管理的机器数量 ≤ 200 台:32C 64GiB
      • 管理的机器数量 ≤ 400 台:64C 128GiB
    • 确保 OCP 机器的内存配置符合上述建议。
  2. 检查 Observer 的内存配置

    • 根据文档片段 3,MonitorDB 租户的内存配置建议如下:
      • 管理机器数量 ≤ 10 台:4C 16GiB
      • 管理机器数量 ≤ 50 台:16C 64GiB
      • 管理机器数量 ≤ 100 台:32C 128GiB
      • 管理机器数量 ≤ 200 台:64C 256GiB
      • 管理机器数量 ≤ 400 台:128C 512GiB
    • 确保 Observer 的内存配置符合上述建议。
  3. 调整系统内存参数

    • 您可以尝试调整 system_memory 参数,以增加可用内存。例如:
      obclient> ALTER SYSTEM SET system_memory='12G';
      
  4. 重启 OCP 和 Observer

    • 有时候,内存配置更改后需要重启 OCP 和 Observer 才能生效。您可以通过 OCP 的界面重启相关节点:
      • 在 OCP 中进入该 OceanBase 集群 总览 页的 OBServer 列表 中单击 重启 按钮,来重启 observer 进程。

总结

  1. 确认 OCP 机器的内存配置符合建议。
  2. 确认 Observer 的内存配置符合建议。
  3. 调整 system_memory 参数以增加可用内存。
  4. 重启 OCP 和 Observer 以使配置生效。

希望以上步骤能帮助您解决内存不足的问题。如果问题仍然存在,请联系 OceanBase 的技术支持人员获取进一步的帮助。

详情请参考:

  1. ob_tenant500_mem_hold_percent_over_threshold OB 500 租户内存占用率超限
  2. ob_tenant500_mem_hold_over_threshold OB 500 租户的占用内存大小超限
  3. 主机规划
  4. OCP 系统常见问题
  5. 使用图形化界面部署 OCP
  6. 系统内存不足/泄漏
  7. system_memory
  8. 4000 ~ 4499
  9. lob_enable_block_cache_threshold
  10. global_write_halt_residual_memory
  11. range_optimizer_max_mem_size

部署时候memory_limit设置太小了。

1 个赞

这个可以在哪配置?

yaml中,obd cluster edit-config xxxx

根据您的问题,您需要调整 OCP 和 Observer 的内存配置。以下是在不同地方进行配置的具体步骤:

1. 调整 OCP 机器的内存配置

通过 OCP 界面调整

  1. 登录 OCP 控制台

    • 打开浏览器,输入 OCP 的访问地址,登录 OCP 控制台。
  2. 进入系统设置

    • 在 OCP 控制台的左侧导航栏中,选择 系统设置 > 系统配置
  3. 修改内存配置

    • 在系统配置页面中,找到与内存相关的配置项,如 memory_limitsystem_memory
    • 修改这些配置项的值,确保它们符合您的需求。
  4. 保存配置

    • 修改完成后,点击 保存 按钮,保存新的配置。

通过命令行调整

如果您更喜欢使用命令行,可以通过 obd 工具进行配置:

obd cluster edit-config <cluster_name> --set memory_limit=32G
obd cluster edit-config <cluster_name> --set system_memory=12G

2. 调整 Observer 的内存配置

通过 OCP 界面调整

  1. 登录 OCP 控制台

    • 打开浏览器,输入 OCP 的访问地址,登录 OCP 控制台。
  2. 进入集群管理

    • 在 OCP 控制台的左侧导航栏中,选择 集群管理 > 集群列表
  3. 选择集群

    • 选择您需要调整的集群,进入集群详情页面。
  4. 编辑配置

    • 在集群详情页面中,选择 配置管理 > 集群配置
    • 找到与内存相关的配置项,如 memory_limitsystem_memory
    • 修改这些配置项的值,确保它们符合您的需求。
  5. 保存配置

    • 修改完成后,点击 保存 按钮,保存新的配置。

通过命令行调整

您也可以通过 obclient 工具直接修改 Observer 的配置:

obclient -h <observer_ip> -P <observer_port> -u root@sys -p <password>

进入 obclient 后,执行以下 SQL 语句:

ALTER SYSTEM SET memory_limit='32G';
ALTER SYSTEM SET system_memory='12G';

3. 重启 OCP 和 Observer

通过 OCP 界面重启

  1. 登录 OCP 控制台

    • 打开浏览器,输入 OCP 的访问地址,登录 OCP 控制台。
  2. 进入集群管理

    • 在 OCP 控制台的左侧导航栏中,选择 集群管理 > 集群列表
  3. 选择集群

    • 选择您需要重启的集群,进入集群详情页面。
  4. 重启节点

    • 在集群详情页面中,选择 OBServer 列表,找到需要重启的节点。
    • 单击节点右侧的 重启 按钮,重启该节点。

通过命令行重启

您也可以通过 obd 工具重启集群:

obd cluster restart <cluster_name>

总结

  1. 调整 OCP 机器的内存配置
    • 通过 OCP 界面或命令行工具 obd 修改 memory_limitsystem_memory 配置。
  2. 调整 Observer 的内存配置
    • 通过 OCP 界面或命令行工具 obclient 修改 memory_limitsystem_memory 配置。
  3. 重启 OCP 和 Observer
    • 通过 OCP 界面或命令行工具 obd 重启相关节点。

希望以上步骤能帮助您解决内存不足的问题。如果问题仍然存在,请联系 OceanBase 的技术支持人员获取进一步的帮助。

具体信息可参考以下文档:

  1. writing_throttling_maximum_duration
  2. writing_throttling_trigger_percentage
  3. datafile_disk_percentage
  4. trace_log_slow_query_watermark
  5. datafile_size
  6. open_cursors
  7. strict_check_os_params
  8. ob_vector_memory_limit_percentage
  9. storage_rowsets_size
  10. system_memory

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