暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 闫宗帅 2023-01-04
536

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

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

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

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

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

使用方法如下:

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工具进行内存泄漏检测的

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

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

gpstart -a --wrappper=valgrind --wrapper-args="--tool=massif --trace-children=yes --log-file='/tmp/postgresql-%p'"

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论