ProxySQL官档翻译__21_Memory_leak_detection(内存泄漏检测)

一曲冷凌霜 提交于 2020-04-29 13:06:41

21_Memory_leak_detection(内存泄漏检测)

备注:文章编写时间201904-201905期间,后续官方在github的更新没有被写入

~
~
内存泄漏检测[Memory leak detection]
从版本v1.3.0g开始,嵌入在ProxySQL中的jemalloc将使用--enable-prof选项进行编译,这将允许进行内存分析成为可能。默认情况下禁用内存分析。


要启用分析,需要在OS(/etc/profile)层面中设置环境变量 MALLOC_CONF 并重新启动proxysql以覆盖嵌入/默认的jemalloc配置。
当前的jemalloc配置是xmalloc:true,lg_tcache_max:16,purge:decay。要启用内存分析,需要启用prof和prof_leak,而且需要调整lg_prof_sample和lg_prof_interval。
建议的jemalloc内存分析器调整可能如下:
"xmalloc:true,lg_tcache_max:16,purge:decay,prof:true,prof_leak:true,lg_prof_sample:18,lg_prof_interval:30"


因此,环境变量应该是:

MALLOC_CONF="xmalloc:true,lg_tcache_max:16,purge:decay,prof:true,prof_leak:true,lg_prof_sample:18,lg_prof_interval:30"

有关jemalloc配置的详细信息,请访问此处(http://jemalloc.net/jemalloc.3.html)。

一、[Start ProxySQL with memory profiler]

1、使用init脚本[using init script]

如果使用init脚本 /etc/init.d/proxysql 运行proxysql,则在启动进程之前添加附加的环境变量设置行就足够了,例如在/etc/init.d/proxysql中的第19行附近:

export MALLOC_CONF="xmalloc:true,lg_tcache_max:16,purge:decay,prof:true,prof_leak:true,lg_prof_sample:18,lg_prof_interval:30"

2、不使用init脚本启动[without init script]

如果没有使用init脚本/etc/init.d/proxysql运行proxysql的情况下,则需要确保在启动proxysql之前设置了OS的环境变量。例如,如果在前台运行proxysql,则需要执行类似于以下内容:

export MALLOC_CONF="xmalloc:true,lg_tcache_max:16,purge:decay,prof:true,prof_leak:true,lg_prof_sample:18,lg_prof_interval:30" 
proxysql -f -c /etc/proxysql.cnf

二、如何报告内存泄漏?[How to report a memory leak?]

jemalloc 分析器将定期在 /var/lib/proxysql 中写入内存分析转存信息,名称为 proxysql.<pid>.<seq>.i<iseq>.heap 。
要报告内存泄漏,请创建一个tar包,其中包含Jemalloc分析器生成的内存信息转存文件,然后创建一个异常检测任务或给发送一封电子邮件给相关人员。还应该包括正在使用的ProxySQL的确切版本以及操作系统信息:
1)如果您使用rpm或deb包,请准确指定使用的是哪一个;
2)如果是自行编译proxysql,请在报告中包含proxysql的二进制文件。


三、禁用分析[Disable profiling]

要禁用分析,需要在未设置 MALLOC_CONF 环境变量的情况下重新启动ProxySQL即可。

完毕!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!