OceanBase内存占用问题

【 使用环境 】测试环境
【 OB or 其他组件 】OB 社区版本
【 使用版本 】V4.5
【问题描述】使用Docker部署的社区版,内存分配了10Gb,系统运行需要1Gb,但是两个租户只占用了8Gb,剩余的1Gb去哪里了?还有,请问下sys租户默认设置2Gb可以通过配置之类的减小吗?
【复现路径】暂无
【附件及日志】

完整compose文件

services:
  # 数据库-OceanBase
  oceanbase:
    image: oceanbase/oceanbase-ce:4.5.0.0-100000012025112711
    container_name: oceanbase
    ports:
      - "12881:2881"
      - "12886:2886"
    volumes:
      - ./oceanbase/ob:/root/ob
      - ./oceanbase/obd/cluster:/root/.obd/cluster
    environment:
      # 集群启动模式: MINI | NORMAL | SLIM
      - MODE=NORMAL
      # 无法启动时是否退出容器: true | false
      - EXIT_WHILE_ERROR=true
      # 集群名称
      - OB_CLUSTER_NAME=obcluster
      # 租户名称 (最长63字节,字母数字下划线,不能是关键字)
      - OB_TENANT_NAME=xxx
      # 集群总内存大小 (最小6G)
      - OB_MEMORY_LIMIT=10G
      # 数据文件大小 (最小5G)
      - OB_DATAFILE_SIZE=50G
      # Redo日志磁盘大小 (最小5G)
      - OB_LOG_DISK_SIZE=50G
      # sys租户管理员密码 (root@sys)
      - OB_SYS_PASSWORD=
      # 业务租户管理员密码 (root@xxx)
      - OB_TENANT_PASSWORD=
      # 系统预留内存 (最小1G)
      - OB_SYSTEM_MEMORY=1G
      # 租户最小CPU规格 (可选)
      - OB_TENANT_MIN_CPU=2
      # 租户内存规格 (可选)
      # - OB_TENANT_MEMORY_SIZE=2G
      # 租户日志盘大小 (可选)
      # - OB_TENANT_LOG_DISK_SIZE=2G
      # obconfigserver地址 (可选)
      # - OB_CONFIGSERVER_ADDRESS=http://10.10.10.1:8080
    restart: unless-stopped
    privileged: true
    network_mode: "bridge"
2 个赞

信息 查看一下
select zone,concat(SVR_IP,’:’,SVR_PORT) observer,
cpu_capacity_max cpu_total,cpu_assigned_max cpu_assigned,
cpu_capacity-cpu_assigned_max as cpu_free,
round(memory_limit/1024/1024/1024,2) as memory_total,
round((memory_limit-mem_capacity)/1024/1024/1024,2) as system_memory,
round(mem_assigned/1024/1024/1024,2) as mem_assigned,
round((mem_capacity-mem_assigned)/1024/1024/1024,2) as memory_free,
round(log_disk_capacity/1024/1024/1024,2) as log_disk_capacity,
round(log_disk_assigned/1024/1024/1024,2) as log_disk_assigned,
round((log_disk_capacity-log_disk_assigned)/1024/1024/1024,2) as log_disk_free,
round((data_disk_capacity/1024/1024/1024),2) as data_disk,
round((data_disk_in_use/1024/1024/1024),2) as data_disk_used,
round((data_disk_capacity-data_disk_in_use)/1024/1024/1024,2) as data_disk_free
from oceanbase.gv$ob_servers;

select a.zone,a.svr_ip,b.tenant_name,b.tenant_type, a.max_cpu, a.min_cpu,
round(a.memory_size/1024/1024/1024,2) memory_size_gb,
round(a.log_disk_size/1024/1024/1024,2) log_disk_size,
round(a.log_disk_in_use/1024/1024/1024,2) log_disk_in_use,
round(a.data_disk_in_use/1024/1024/1024,2) data_disk_in_use
from oceanbase.gv$ob_units a join oceanbase.dba_ob_tenants b on a.tenant_id=b.tenant_id order by b.tenant_name;

学习一下,没用docker或k8s部署过



是因为META$1002这个租户占用了1g?看类型是存放元数据?

是的 看着Meta 租户是配置了一个1G的内存
默认是租户规格的10%

  • 租户规格大于等于2G时,Meta租户最小1G
  • 租户规格小于2G时,Meta租户占用512M
    Meta 租户

Meta 租户是 OceanBase 数据库内部自管理的租户,每创建一个用户租户会创建一个对应的 Meta 租户,其生命周期与用户租户保持一致。Meta 租户用于存储和管理用户租户的租户私有数据,这部分数据不需要跨库物理同步以及物理备份恢复,例如:配置项、位置信息、副本信息、日志流状态、备份恢复相关信息、合并信息等。 Meta 租户不可登录,普通用户只能通过系统租户的视图查询 Meta 租户下的数据。Meta 租户没有独立的 Unit,创建租户时默认为 Meta 租户预留资源,各项资源从用户租户资源中扣除。