GBase 8a MPP TPCH压力测试堆内存不足解决办法

4个节点搭建的集群,在对tpch基准测试生成的3t数据,进行40并发的压力测试过程中,会出现分配1073741836字节内存块时未能成功,从而返回 NULL。这可能表明数据库尝试在堆内存中分配空间时发生了错误。报错信息如下:

 

ERROR 1708 (HY000) at line 3: [10.10.55.33:5050](GBA-02AD-0005)Failed to query in gnode:

DETAIL: (GBA-01EX-700) Gbase general error: thd 0x24b7e000 id(1351) BLK_LARGE: return NULL in alloc(1073741836, 37),HeapUsed(72255294448,49620991456,16428344800),SystemUsed(44237124,45523119148,1077953184), heap usage has exceed MemoryLimit, SystemMemStatus: memfree:6286458880,swapfree:0

SQL: SELECT /*10.10.55.33_1084_3_2024-04-18_11:25:47*/ /*+ TID(‘1639’) */ `l1`.`s_name` AS `c3`, COUNT(0) AS `c4` FROM (SELECT /*10.10.55.33_1084_3_2024-04-18_11:2

 

其中HeapUsed(72255294448,49620991456,16428344800):这行显示了堆内存的使用情况。72255294448是当前已使用的堆内存大小,49620991456`是堆内存的总大小,16428344800是系统可用内存大小。 SystemUsed(44237124,45523119148,1077953184):这行显示了系统内存的使用情况。44237124是当前已使用的系统内存大小,45523119148`是系统总内存大小,1077953184是系统可用内存大小。heap usage has exceed MemoryLimit`:这明确指出堆内存使用已经超过了限制。

 

解决办法:将4个节点的gnode配置文件添加如下参数,重启服务后生效。

gbase_buffer_insert=512M

gbase_buffer_hgrby=512M

gbase_buffer_distgrby=512M

gbase_buffer_hj=512M

gbase_buffer_sj=512M

gbase_buffer_sort=512M

gbase_buffer_rowset=512M

gbase_buffer_result=512M

参数的默认值为2G,通过将这些参数的值设置为 512MB,减少了算子buffer的large_heap堆内存的占用量,避免再高并发场景下,出现内存不足无法分配的情况,提高数据库的稳定性。

原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/317863.html

(0)
上一篇 2天前
下一篇 2天前

相关推荐

发表回复

登录后才能评论