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

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即可。

完畢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章