租户内存占用情况和显示情况不一致

问题描述
现在有个租户内存占用比例持续上升,具体表现如下:

  1. 总内存是32G,ocp-express观察从40%持续上升至90%左右;

  2. 统计内存实际占用不超过40%,具体情况如下:

  3. 统计每个模块占用情况,发现三个zone下KvstorCacheMb占用都非常高,最高能达到19G,但是持续观察一天,发现这个模块的使用率为0%


    4.观察Memstore发现使用率接近100%,但是远远低于总内存的50%(默认值)
    5.执行如下SQL会报No memory or reach tenant memory limit:
    SELECT
    /+ PARALLEL(a 64)/
    count(1) as runCount,
    sum(travel_time) as runTimes,
    sum(travel_mileage) as runDis,
    IFNULL(sum(a.travel_mileage_d),0) as travelMileageD
    FROM car_travel a
    LEFT JOIN mon_truck tr ON a.car_id = tr.truck_id
    LEFT JOIN mon_agent ag ON tr.agent_id = ag.agent_id
    left join sys_dic pColor on pColor.dic_type = ‘carSubColor’ and pColor.dic_label=tr.plate_color
    WHERE 1=1
    and a.calc_date >= ‘2025-06-01’
    and a.calc_date <= ‘2025-07-01’
    GROUP BY a.car_id
    ORDER BY ag.agent_name,runCount DESC

但是按如下任意一种方式调整sql就不报错了:
(1)并行度PARALLEL调整成16

(2)减少统计函数,比如去掉IFNULL(sum(a.travel_mileage_d),0) as travelMileageD:

现在有三点疑问:
1.ocp上显示的内存占用不是实际内存占用比例?而是hold内存?
2.KvstorCacheMb为什么初始化就占用这么大内存?明明是空置的为什么不释放内存?
3.Memstore使用率远低于上限,为什么不继续扩展?
4.统计函数使用的是那个模块的内存?为什么无法自动扩展内存?并行度高为什么内存占用就高呢?

相关信息:
1.oceanbase版本:4.3.5.1
2.租户相关的几个配置:
_memstore_limit_percentage与 memstore_limit_percentage都是默认值



租户内存32G

@论坛小助手

@论坛小助手

ocp-express可能有问题,这个不建议使用了,建议使用OCP