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 |
+————————————-+——-+

三、调整方案

DC缓冲,包括冷和热的,都是默认5秒释放一次。

在gnode的配置文件里增加如下参数

// 主动释放掉缓冲DC数据
// 支持set global
_gbase_cache_drop_hot_data=1

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

// 如果释放掉的DC不足设定的参数值,再次执行drop_cold最小时间间隔(单位秒)。 不建议太小,避免频繁drop。
// 建议10, 如果效果不佳,可以改成15。默认0是维持全局的默认5秒释放一次。
// 支持set global
_gbase_cache_drop_delay_time=10

从gnode的express.log里,能够看到清理的日志信息。

2021-02-19 00:01:25.038 ReleaseTablesCache OK for table in gbase level: ./pm/metadata/a_il_cell_rnlc_nr_n3
2021-02-19 00:10:19.471 ReleaseTablesCache OK for table : ./pm/metadata/a_il_cell_prb_res_tdd_n3
2021-02-19 00:10:19.474 ReleaseTablesCache OK for table in gbase level: ./pm/metadata/a_n_mea_report_v_h_n3
2021-02-19 00:10:19.481 ReleaseTablesCache OK for table : ./pm/metadata/a_n_mea_report_v_h_n3
2021-02-19 00:10:24.486 ReleaseTablesCache OK for table in gbase level: ./pm/metadata/a_plat_ipdatafilte_h_n3
2021-02-19 00:10:24.492 ReleaseTablesCache OK for table : ./pm/metadata/a_plat_ipdatafilte_h_n3
2021-02-19 00:10:24.492 ReleaseTablesCache OK for table in gbase level: ./pm/metadata/a_n_plat_rfcport_5_n3
2021-02-19 00:10:24.492 ReleaseTablesCache OK for table : ./pm/metadata/a_n_plat_rfcport_5_n3

四、备注

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

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

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

发表评论

您的电子邮箱地址不会被公开。