ProxySQL官檔翻譯__21_Memory_leak_detection(內存泄漏檢測)

21_Memory_leak_detection(內存泄漏檢測)

備註:文章編寫時間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

1、[Start ProxySQL with memory profiler]

一、使用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"

二、不使用init腳本啓動[without init script]

若是沒有使用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

2、如何報告內存泄漏?[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的二進制文件。code

3、禁用分析[Disable profiling]

要禁用分析,須要在未設置 MALLOC_CONF 環境變量的狀況下從新啓動ProxySQL便可。htm

完畢!進程

相關文章
相關標籤/搜索