问题现象
在虚拟机上安装GBase 8a MPP V953时,初始化安装后,gbase 组件不能启动。具体情况见下图:
通过【gcadmin】命令查看后可知,gcware与gcluster组件正常开启,gnode却关闭。通过【gcluster_services gbase infor】语句查看gbase组件的信息,组件信息为stop
通过【gcluster_services gbase start】语句手动启动也失败,具体报错如下:
排查步骤
1. 网络问题排查
起初怀疑是网络问题,应检查防火墙,如果没关闭则要关闭防火墙。
操作系统为Cent OS7.2,查看防火墙语句为【systemctl status firewalld.service】,查看到的结果如下
看到Active:后的状态为dead,证明防火墙已经处于关闭状态。且为disabled意为禁止开机启动。
注意一下,如果状态不为dead ,应关闭防火墙,且禁止开机自动启动
关闭防火墙:【systemctl stop firewalld.service】
禁止防火墙开机启动:【systemctl disabled firewalld.service】
2.内存问题排查
这时候应该去看一下导致不能启动的真正原因了,查看gnode的启动日志。
启动日志位于【/安装目录/IP/gnode/log/gbase/】下的system.log,报错信息如下:
Memory manager is unable to allocate specified amount of memory。这句话的意思是说gbase 的内存分配组件没有可以分配的内存了。
解决方案
遇到上述情形,解决方案有两种:
1、关闭其它占用内存的服务,或者重启一下。
数据库一旦启动后,就不再检查这个了,而是按照参数进行动态计算最大值(gbase_memory_pct_target)。所以,如果此时内存被其它程序占用,将会使用到SWAP。
2、若占用内存的组件不能关闭,则需人工降低数据库的启动内存,涉及如下三个参数
gbase_heap_data
gbase_heap_temp
gbase_heap_large
建议采用第二种方法,重启机器或许会影响正在使用这台服务器的其他人,或者是影响到正在使用该服务器的服务。
进入到gnode配置文件【/安装目录/IP/gnode/config】,修改gbase_8a_gbase.cnf文件
直接搜索heap关键字,将gbase_heap_data、gbase_heap_temp、gbase_heap_large,打开注释,以降低启动内存。
进行上述修改后GBase 8a的gbase组件可正常启动了!
问题分析
有兴趣的同学可以看下对于该问题的问题分析:
GBase 8a的gbase启动内存其默认值,要达到内存的62.5%才可保障集群正常启动,其中三个内存参数(gbase_heap_data,gbase_heap_large ,gbase_heap_temp),默认是按照物理内存的10/16=62.5%评估,比例是6:3:1, 等同于 6/16、 3/16 和 1/16。。比如内存8G, 62.5%是5G, 那么这3个参数默认是
gbase_heap_data=5G*60%=3G
gbase_heap_temp=5G*30%=1.5G
gbase_heap_large=5G*10%=0.5G
可以按比例减少,其中gbase_heap_data可以优先,因为其默认比例最大。
上面那台起不来的机器,内存情况如下:
8G的内存,用1024换算下来,也就7G多,需要有4.2G的空余,以上这个情形肯定是达不到了。所以需要手动降低GBase的启动内存才能顺利启动。