GBase 8a集群加快热数据淘汰,减少内存占用





一、现象:
在256G、512G、1T等机器上,默认的gbase_heap_data都很大。 可以按照物理内存*0.36计算。
现发现在有大量并发的查询类操作,包括大结果集查询,insert select, 导出等需要在内存临时缓冲数据的情况。
会出现内存不足,导致报错情况。
报错样例如下,是gbase_heap_data引起。
DETAIL: (GBA-01-600) Gbase internal error: Task 1486792, thd 0x11055808512,BLK_TEMP: return NULL in alloc(8388620),HeapUsed(18288255904,2601731328,3035596000),SystemUsed(22624634748,0,2241434316), heap usage has exceed MemoryLimit, SystemMemStatus:memfree:4236869632,swapfree:19942891520

二、相关参数如下:
[gbase@localhost ~]$ gncli
GBase client 8.6.2.43-R14.115142. Copyright (c) 2004-2020, GBase. All Rights Reserved.
gbase> show variables like ‘%drop%’;
+————————————-+——-+
| Variable_name | Value |
+————————————-+——-+
| _gbase_cache_drop_delay_time | 0 |
| _gbase_cache_drop_hot_data | OFF |
| _gbase_cache_drop_unlock_cell_count | 1000 |
+————————————-+——-+

三、调整方案
在gnode的配置文件里增加如下参数

// 主动释放掉缓冲DC数据
_gbase_cache_drop_hot_data=1

// 一次释放unlock状态的DC数量 默认值: 1000
_gbase_cache_drop_unlock_cell_count = 50000 (一次尽量多释放一些)

// 如果释放掉的DC不足设定的参数值,再次执行drop_cold最小时间间隔(单位秒)。 不建议太小,避免频繁drop。
// 建议10, 如果效果不佳,可以改成15
_gbase_cache_drop_delay_time=10

四、备注
无论参数如何调整,只要并发数上来,总会出现内存不足的情况,所以在如上修改无效时,请降低查询类SQL的并发数量。

另外,为了避免使用者误会,建议在gcluster和gnode的参数都修改了。

GBase 8a集群加快热数据淘汰,减少内存占用》有1条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注