window电脑 用docker部署oceanbase,老是提示内存 not enough memory

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】启动日志为
[WARN] OBD-1007: (172.17.0.2) The recommended number of core file size is unlimited (Current value: 0)
[WARN] OBD-1007: (172.17.0.2) The recommended number of stack size is unlimited (Current value: 8192)
[WARN] OBD-1017: (172.17.0.2) The value of the “vm.max_map_count” must be within [327600, 1310720] (Current value: 262144, Recommended value: 655360)
[WARN] OBD-1017: (172.17.0.2) The value of the “vm.overcommit_memory” must be 0 (Current value: 1, Recommended value: 0)
[ERROR] OBD-2000: (172.17.0.2) not enough memory. (Available: 625M, Need: 3G), Please execute echo 1 > /proc/sys/vm/drop_caches as root in 172.17.0.2 to release cached.
[WARN] OBD-1012: (172.17.0.2) clog and data use the same disk (/)

无法将obcluster的状态转变为running,现在为deployed,导致连接不上集群,无法进行数据库的使用
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

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

根据文档库中的信息,以下是针对您问题的详细解答:

问题分析

  1. 内存不足:日志中明确提示 not enough memory,并且需要的内存为 3G,而当前可用内存仅为 625M。

    • 文档片段 1 提到,部署 OceanBase 数据库时,memory_limit 不能低于 6G(对于社区版 4.x 版本)。
    • 您的 Docker 容器环境可用内存不足,无法满足 OceanBase 的最低要求。
  2. 其他系统参数警告

    • vm.max_map_count 需要设置为 [327600, 1310720] 范围内的值,当前值为 262144。
    • vm.overcommit_memory 需要设置为 0,当前值为 1。
    • 这些参数可以通过调整宿主机的内核配置解决。
  3. Clog 和 Data 使用同一磁盘:虽然这不是直接导致内存不足的原因,但可能会在后续运行中引发性能问题。


解决方案

1. 增加 Docker 容器的内存分配

根据文档片段 3 和片段 4 的描述,OceanBase 社区版容器环境的可用内存必须不少于 6G。请按照以下步骤操作:

  • 在 Docker Desktop 中,调整资源分配:

    • 打开 Docker Desktop 设置。
    • 进入 Resources > Advanced,将内存分配增加到至少 8G(推荐值)。
    • 确保 CPU 分配至少为 2 核。
  • 如果使用命令行启动容器,请确保指定足够的内存。例如:

    sudo docker run -p 2881:2881 --name obstandalone \
      --memory="8g" --cpus="2" \
      -e MODE=MINI -e OB_TENANT_PASSWORD=****** \
      -d quay.io/oceanbase/oceanbase-ce
    

2. 调整宿主机内核参数

根据日志中的警告信息,需要调整以下内核参数:

  • 修改 vm.max_map_count

    sudo sysctl -w vm.max_map_count=655360
    

    或者永久修改,编辑 /etc/sysctl.conf 文件,添加以下内容:

    vm.max_map_count=655360
    
  • 修改 vm.overcommit_memory

    sudo sysctl -w vm.overcommit_memory=0
    

    同样可以永久修改,编辑 /etc/sysctl.conf 文件,添加以下内容:

    vm.overcommit_memory=0
    
  • 清理缓存以释放内存:

    sudo sysctl -w vm.drop_caches=1
    # 或
    sudo echo 1 > /proc/sys/vm/drop_caches
    

3. 检查磁盘配置

根据文档片段 8 的描述,Clog 和 Data 不建议使用同一磁盘。虽然这不会直接导致内存不足,但可能会影响性能。如果条件允许,请为 Clog 和 Data 分别挂载不同的磁盘路径。

4. 重新部署集群

完成上述调整后,重新部署 OceanBase 集群:

  • 删除现有容器:
    sudo docker rm -f obstandalone
    
  • 使用新的配置重新启动容器(参考步骤 1 中的命令)。

注意事项

  • 最低内存要求:确保 Docker 容器的可用内存不低于 6G。
  • 性能优化:尽量避免 Clog 和 Data 使用同一磁盘。
  • 持久化配置:内核参数的修改需要在每次重启后重新执行,或者通过 /etc/sysctl.conf 文件实现持久化。

如果您按照上述步骤操作后仍然遇到问题,请提供更新后的日志信息以便进一步排查。

检索到的文档如下:

  1. 错误码
  2. 部署个人实验环境
  3. 快速体验 OceanBase 社区版
  4. 系统内存不足/泄漏
  5. 5000 ~ 5999

就是内存不足导致的。docker分配多少内存?
ob至少需要6G内存方可运行