- 内存问题排查
- 这时候应该去看一下导致不能启动的真正原因了,查看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的启动内存才能顺利启动。
- 总结
- 在安装环境监测无误的情况下,初次安装GBase 8a V95时,遇到安装后gbase组件启动失败,并且报错为time out,大概率是内存不够导致,最佳方法是修改配置文件,手动降低gbase_heap_data,gbase_heap_large ,gbase_heap_temp这三个参数,重启集群方可解决。