南大通用GBase 8a集群启动日志报错express total heap size exceeds memory limit

原因是GBase 8a在启动时会检查当前内存是否可以满足内存分配要求,如果不满足则报这个错误。一般常见于内存很小的场景,以及已经有其它大量占用内存的程序在运行的情况。解决方案包括扩大内存、减少数据库内存参数以及杀掉其它占用内存的进程等。

默认内存检测公式

gbase_heap_data + gbase_heap_temp + gbase_heap_large + gbase_buffer_insert <= (物理内存+swap空间) * gbase_memory_pct_target

其中gbase_memory_pct_target默认值是0.8,也就是80%

而内存不足的可能性

1、有其它进程占用了内存。 特别是一些java程序。

2、内存检测依赖操作系统,有可能不准

解决方案

1、清理其它占用内存的程序,不要部署在数据库节点上。

2、或者人工减少数据库的启动内存参数,

gbase_heap_data
gbase_heap_temp
gbase_heap_large

参考

3、调整操作系统内核参数【未经大规模项目验证,不建议使用】

vm.overcommit_memory 设置相关。
取值为:
 0 – Heuristic overcommit handling(缺省值,试探式申请。内核利用某种算法猜测内存申请是否合理,它认为不合理就会拒绝)
 1 – Always overcommit
 2 – Don’t overcommit
为了保证GBase申请内存成功,可以设置vm.overcommit_memory=1

参考文章

https://blog.csdn.net/longwang155069/article/details/50897026

南大通用GBase 8a集群启动日志报错express total heap size exceeds memory limit》有1条评论

评论已关闭。