集群服务器分为高配(256G 内存 / 64 核)、低配(128G/32 核)两种机器;租户 unit 配置 unit_min_cpu=4,unit_min_memory=32G,unit_max_cpu=8;Unit 从高配节点自动迁移至低配节点后,租户业务峰值 CPU 跑到 32 核,内存占用 100G,资源上限限制完全失效;查询gv$ob_resource_unit显示 unit 规格正常,无报错。
1 个赞
你这个原因是OB 资源隔离依赖节点可用物理资源校验,低配节点总内存、CPU 小于 unit_max 规格时,资源管控模块会自动放弃上限约束,防止 Unit 被直接 kill;异构机器混布场景下,自动 Unit 调度会把 unit 调度至资源不足节点,隔离机制降级。 根治方案
按机器规格划分不同 zone,zone 绑定对应 unit 规格,禁止跨规格 zone 迁移 unit:
给低配zone设置unit白名单,仅允许小规格unit部署
ALTER ZONE zone_low_config SET RESOURCE_WHITELIST=‘unit_small’;
ALTER ZONE zone_high_config SET RESOURCE_WHITELIST=‘unit_large’;
关闭跨 zone 自动 unit 迁移,仅允许同 zone 内调度:
ALTER SYSTEM SET ob_unit_migrate_cross_zone_enable = 0;
动态调整超限租户资源,临时收紧配额,缓解资源争抢:
ALTER RESOURCE UNIT unit_small MAX_CPU=4,MAX_MEMORY=‘32G’;
长期方案:集群服务器硬件规格统一,消除异构节点;拆分业务租户,高低配置机器物理隔离。
2 个赞