原因是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条评论
评论已关闭。