From e5b6eb50fb6f8366cc6bded340965ce362db656a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 7 Dec 2016 02:43:51 +0000 Subject: [PATCH] Enable memory profiling at runtime #822 Added two new Admin command: * PROXYSQL MEMPROFILE START * PROXYSQL MEMPROFILE STOP --- lib/ProxySQL_Admin.cpp | 15 +++++++++++++++ src/main.cpp | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/ProxySQL_Admin.cpp b/lib/ProxySQL_Admin.cpp index 6044052e4..dc901ec8d 100644 --- a/lib/ProxySQL_Admin.cpp +++ b/lib/ProxySQL_Admin.cpp @@ -517,6 +517,21 @@ bool admin_handler_command_proxysql(char *query_no_space, unsigned int query_no_ return false; } +#ifndef NOJEM + if (query_no_space_length==strlen("PROXYSQL MEMPROFILE START") && !strncasecmp("PROXYSQL MEMPROFILE START",query_no_space, query_no_space_length)) { + bool en=true; + mallctl("prof.active", NULL, NULL, &en, sizeof(bool)); + SPA->send_MySQL_OK(&sess->client_myds->myprot, NULL); + return false; + } + if (query_no_space_length==strlen("PROXYSQL MEMPROFILE STOP") && !strncasecmp("PROXYSQL MEMPROFILE STOP",query_no_space, query_no_space_length)) { + bool en=false; + mallctl("prof.active", NULL, NULL, &en, sizeof(bool)); + SPA->send_MySQL_OK(&sess->client_myds->myprot, NULL); + return false; + } +#endif + if (query_no_space_length==strlen("PROXYSQL KILL") && !strncasecmp("PROXYSQL KILL",query_no_space, query_no_space_length)) { proxy_info("Received PROXYSQL KILL command\n"); exit(EXIT_SUCCESS); diff --git a/src/main.cpp b/src/main.cpp index a7da9e7c7..5d676b2ce 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -131,7 +131,8 @@ static volatile int load_; //#ifdef DEBUG //const char *malloc_conf = "xmalloc:true,lg_tcache_max:16,purge:decay,junk:true,tcache:false"; //#else -const char *malloc_conf = "xmalloc:true,lg_tcache_max:16,purge:decay"; +//const char *malloc_conf = "xmalloc:true,lg_tcache_max:16,purge:decay"; +const char *malloc_conf = "xmalloc:true,lg_tcache_max:16,purge:decay,prof:true,prof_leak:true,lg_prof_sample:20,lg_prof_interval:30,prof_active:false"; //#endif /* DEBUG */ //const char *malloc_conf = "prof_leak:true,lg_prof_sample:0,prof_final:true,xmalloc:true,lg_tcache_max:16";