首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >GPDB如何使用valgrind进行内存检测

GPDB如何使用valgrind进行内存检测

作者头像
yzsDBA
发布2023-02-26 13:06:50
发布2023-02-26 13:06:50
1.2K0
举报

GPDB中如何使用valgrind检测内存泄漏

GPDB中基于PostgreSQL的MPP的分布式数据库,我们在使用时会遇到内存泄漏的问题。通常我们会使用工具valgrind进行内存泄漏检测。但是,GPDB是分布式数据库,并且是多进程架构,Valgrind只能跟踪一个进程,它不能attach一个进程。那么如何在GPDB中使用valgrind进行内存检测呢?

GPDB的GitHub上有个话题进行了讨论,感兴趣的同学可以查看:

https://github.com/greenplum-db/gpdb/issues/5375

总结来说,GPDB中能使用valgrind工具吗?答案是能

使用方法如下:

代码语言:javascript
复制
gpstart -a --wrapper=valgrind --wrapper-args "--leak-check=no --gen-suppressions=all --time-stamp=yes --trace-children=yes --log-file='/tmp/postgresql-%p'"

也就是通过--wrapper选项来指定valgrind工具,--wrapper-args来指定valgrind工具的参数。在GitHub讨论中,我们看到GPDB6中有个patch:

https://github.com/greenplum-db/gpdb/pull/10672

让pg_ctl重新使用wrapper功能,其实PG是支持的,只是在GPDB5中merge PG时将其去掉了,限制该patch又重新将这个功能合入了进来:也就是说PG也是可以使用valgrind工具进行内存泄漏检测的

代码语言:javascript
复制
https://github.com/greenplum-db/gpdb/pull/10672/commits/6273ea7976e55b67c9f2956ced10c6ed8c482701

如果想使用valgrind的massif工具,那么可以使用下面命令:

代码语言:javascript
复制
gpstart -a --wrappper=valgrind --wrapper-args="--tool=massif --trace-children=yes --log-file='/tmp/postgresql-%p'"

这里抛砖引玉,引出GPDB使用valgrind进行内存泄漏检测的方法,详细使用方法需要同学们亲手实践。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yanzongshuaiDBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档