备注:文章编写时间201904-201905期间,后续官方在github的更新没有被写入html
~
~
内存泄漏检测[Memory leak detection]
从版本v1.3.0g开始,嵌入在ProxySQL中的jemalloc将使用--enable-prof选项进行编译,这将容许进行内存分析成为可能。默认状况下禁用内存分析。git
要启用分析,须要在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"github
所以,环境变量应该是:sql
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)。ide
若是使用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"
若是没有使用init脚本/etc/init.d/proxysql运行proxysql的状况下,则须要确保在启动proxysql以前设置了OS的环境变量。例如,若是在前台运行proxysql,则须要执行相似于如下内容:.net
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
jemalloc 分析器将按期在 /var/lib/proxysql 中写入内存分析转存信息,名称为 proxysql.<pid>.<seq>.i<iseq>.heap 。
要报告内存泄漏,请建立一个tar包,其中包含Jemalloc分析器生成的内存信息转存文件,而后建立一个异常检测任务或给发送一封电子邮件给相关人员。还应该包括正在使用的ProxySQL的确切版本以及操做系统信息:
1)若是您使用rpm或deb包,请准确指定使用的是哪个;
2)若是是自行编译proxysql,请在报告中包含proxysql的二进制文件。code
要禁用分析,须要在未设置 MALLOC_CONF 环境变量的状况下从新启动ProxySQL便可。htm
完毕!进程