当发生内存增涨超过预期时,通常需要根据 MOD_ID、MOD_NAME 查询已知问题并结合代码来排查。OBServer 可以监控某个特定的 MOD 的内存使用,来分析判断是否发生了 memleak 的问题。
适用版本
OceanBase 数据库所有版本。
什么时候开启 memleak 监控?
确保问题在发生,即开启 leak_mod_to_check 时确实在发生 memory leak。同时根据 leak 的频率来决定开启多长时间,比如很频繁的增长,开启 1 分钟左右即可。
怎么开启 memleak 监控?
alter system set leak_mod_to_check='MOD_NAME' server='ip_addr:port';
其中,MOD_NAME 是需要监控的内存模块的名字。 开启后,统计 MOD 内存申请的信息会被记录在 _all_virtual_mem_leak_checker_info 表中。
怎么查看监控结果?
登录 sys 租户,查看 __all_virtual_mem_leak_checker_info 表,back_trace 列记录了申请内存的堆栈。可以通 过 addr2line 以及 debuginfo 来获知触发申请的源头和过程。
怎么关闭 memleak 监控?
alter system set leak_mod_to_check='NONE' server='ip_addr:port';