Jemalloc 堆内存分析
本文介绍如何为 StarRocks 启用和可视化 Jemalloc 堆内存分析。
备注
- 启用 Jemalloc 堆内存分析可能会影响 StarRocks 的性能。
- 该方案仅适用于 StarRocks v3.1.6 及更高版本。
启用 Jemalloc 堆内存分析
语法:
ADMIN EXECUTE ON <be_id> 'System.print(HeapProf.getInstance().enable_prof())'
启用要求 BE 启动时 jemalloc_conf 中带有 prof:true(默认即为如此),否则语句会失败。当前设置也可以在 information_schema.be_configs 中查看:查询 NAME 为 jemalloc_conf 的那一行,其 VALUE 中的 prof_active 选项即为当前值。
be_id: BE/CN 节点的 ID。可以通过运行 SHOW BACKENDS 或 SHOW COMPUTE NODES 获取 ID。
示例:
mysql> admin execute on 10001 'System.print(HeapProf.getInstance().enable_prof())';
+--------+
| result |
+--------+
| OK |
+--------+
1 row in set (0.00 sec)
可以使用以下语法检查 Jemalloc 堆内存分析是否已启用:
ADMIN EXECUTE ON <be_id> 'System.print(HeapProf.getInstance().has_enable())'
示例:
mysql> admin execute on 10001 'System.print(HeapProf.getInstance().has_enable())';
+--------+
| result |
+--------+
| true |
+--------+
1 row in set (0.01 sec)
可以使用以下语法禁用 Jemalloc 堆内存分析:
ADMIN EXECUTE ON <be_id> 'System.print(HeapProf.getInstance().disable_prof())'
示例:
mysql> admin execute on 10001 'System.print(HeapProf.getInstance().disable_prof())';
+--------+
| result |
+--------+
| OK |
+--------+
1 row in set (0.00 sec)