【 使用环境 】 测试环境
【 OB 】
【 使用版本 3.1.5 和 4.0.0】
【问题描述】oceanbase 节点资源是4核8G,resource_hard_limit设置为500,创建资源池时用的资源单元规格是 create resource unit s5 max_memory = ‘8G’,max_cpu = 8,max_session_num = 64,min_cpu = 8,min_memory = ‘8G’, max_disk_size = ‘10G’, max_iops = 2000,min_iops = 1024; 但是会报错资源不足,不是配置资源超配了吗,为什么cpu还是资源不足呢?
资源超卖 不是说创建租户时资源可以超卖的意思吗
【附件】
你只有 8G 的内存,不可能超额分配更多的内存。这个参数不要改动。你可以参考我发的其他文章关于小内存部署 OB 思路去体验 OB。
初始化 OB 集群的时候可以将参数 cpu_count 设置为 16 或更大都行。那个可以超额分配。但是主机 CPU 的实际能力是有限的,就算设置为 16 个 cpu 也不表示 CPU 能力变大了。这个跟货币通货膨胀是一个道理。
内存不行,无法超额分配。因为内存分配是排他的。唯一可以玩转的技巧是 min memory 跟 max memory 不一样,min memory 总和不超过可分配内存加上上面那个参数结合使用。多用在测试环境。前提也是物理内存有一定大小。这里内存不足不能走这条路(玩的难度太大。况且 4.0 彻底废弃了 min memory 和 max memory 之分)。
内存我知道,我想表达的是resource_hard_limit 这个参数,现在我节点资源cpu是4核,resource_hard_limit 我设置的是500,现在最大可用 cpu 不就是20了吗,我查看资源情况也确实是如此,变成了20,但是我创建资源单元规格的时候指定max_cpu = 8,min_cpu=8 为什么还会报cpu资源不足呢,是还有什么其他限制吗,谢谢
首先你要看看剩余可分配资源有多少
select svr_ip, CPU_CAPACITY, (CPU_CAPACITY-CPU_ASSIGNED) CPU_FREE
, round(MEM_CAPACITY/1024/1024/1024) MEM_CAPACITY_GB, round((MEM_CAPACITY-MEM_ASSIGNED)/1024/1024/1024,2) MEM_FREE_GB
, round(DATA_DISK_CAPACITY/1024/1024/1024) DATA_CAPACITY_GB, round((DATA_DISK_CAPACITY-DATA_DISK_IN_USE)/1024/1024/1024,2) DATA_FREE_GB
, round(DATA_DISK_CAPACITY/1024/1024/1024) LOG_CAPACITY_GB, round((LOG_DISK_CAPACITY-LOG_DISK_IN_USE)/1024/1024/1024,2) LOG_FREE_GB
from GV$OB_SERVERS ;
你的语句里资源还包括内存资源。内存不足那个语句还是会报错。你的 max memory 和 min memory 8G 是有问题的。
你可以先按正常方法把集群部署成功,然后再去调整那个参数,观察特点。
方法 https://mp.weixin.qq.com/s/oeCHjSTqB6FCKNZxSFnhog