报错日志errcode=-4388 info="the hold of observer tenant is over the system_memory")

OCP的数据库,单台部署,内存64G, 设置的system_memory 为10G

oceanbase 每十分钟就出现ERROR日志:
[2024-08-24 12:53:32.854705] ERROR issue_dba_error (ob_log.cpp:1786) [2184][MemDumpTimer][T0][Y0-0000000000000000-0-0] [lt=16][errcode=-4388] Unexpected internal error happen, please checkout the internal errcode(errcode=0, file=“ob_tenant_mgr.cpp”, line_no=441, info=“the hold of observer tenant is over the system_memory”)
[2024-08-24 12:53:32.854711] EDIAG [COMMON] print_tenant_usage_ (ob_tenant_mgr.cpp:441) [2184][MemDumpTimer][T0][Y0-0000000000000000-0-0] [lt=16][errcode=0] the hold of observer tenant is over the system_memory(observer_tenant_hold=11509002240, system_memory=10737418240) BACKTRACE:0xd5f30be 0x59b549e 0x59b5362 0x5997072 0xd14b512 0xd14afae 0xacae760 0xacae0d3 0x3bf8fa5 0xdc671e7 0xdc6402a 0x7f4756873ea5 0x7f475659cb0d

2 个赞

估计整个集群的负载比较高?因为system_memory就是500租户的内存大小,如果负载比较高的话报这个也在预期内,还有种可能就是负载不高但是还有这个报错,那可能就是500租户的内存没有释放遇见BUG了,那就需要查下gv$memory视图看下对应租户的那个内存模块占用比较多以及查找更多日志,看看下面文档判断下

ob_tenant500_mem_hold_percent_over_threshold OB 500 租户内存占用率超限-V4.3.1-OceanBase 云平台OCP文档-分布式数据库使用文档

2 个赞

麻烦发下数据库版本,另外ocp有告警出来吗?

1 个赞

参考下这个帖子
社区版ob4.1 16c64G的机器 system_memory 设置多少比较好?1wr4zrk_gaMTIwMjU5NTAzNC4xNzE0OTc1MTY1_ga_T35KTM57DZ*MTcyNDYzNjA2NS4xNjEuMS4xNzI0NjQxNTE3LjguMC4w

1 个赞

这个问题有进展吗

1 个赞

OceanBase 构建版本号:4.1.0.0-100000172023031416
就是OCP告警出来,才发现的,目前还是
告警概述:alarm_template_id=0:ob_cluster=obcluster-1:host=192.168.51.239:server_type=observer:error_code=4388:keyword= OBServer 程序日志

告警详情:[OBServer 程序日志] 集群:obcluster,主机:192.168.51.239,日志类型:observer,日志文件:/home/admin/log/observer.log,日志级别:ERROR,关键字=,错误码=4388,日志详情=[2024-09-04 08:07:16.245275] ERROR issue_dba_error (ob_log.cpp:1786) [2184][MemDumpTimer][T0][Y0-0000000000000000-0-0] [lt=18][errcode=-4388] Unexpected internal error happen, please checkout the internal errcode(errcode=0, file="ob_tenant_mgr.cpp", line_no=441, info="the hold of observer tenant is over the system_memory") 。

另外不是设置的时候没有加M,G之类的,那个贴子也是我发的。

1 个赞

500租户内存超限,请按照如下步骤发下结果

查看模块内存
select * from gv$ob_memory where tenant_id=500 order by used desc limit 20;

获取堆栈(back_trace)
select * from __all_virtual_malloc_sample_info where svr_ip=‘xxx’ and mod_name=‘第一步查询到的占用内存较大的模块’ order by alloc_bytes desc limit 3

打印堆栈:
addr2line -pCfe bin/observer $back_trace

2 个赞

后来加大system_memory 值,从10G 加到16G 就没ERROR日志了

1 个赞