作者:葉金榮,知數(shù)堂聯(lián)合創(chuàng)始人
如何加載Jemalloc蚜印。
有時(shí)候莺禁,我們想采用Jemalloc代替glibc自帶的lib庫(kù),或者如果想啟用TokuDB引擎窄赋,則就必須啟用Jemalloc才行了哟冬。
如果通過搜索引擎找到如何加載Jemalloc方法時(shí),可能會(huì)看到像下面這種建議:
#修改my.cnf文件 [mysqld_safe]配置區(qū)間忆绰,加上Jemalloc選項(xiàng)[mysqld_safe]thp-setting = nevermalloc-lib = /usr/lib64/libjemalloc.so
實(shí)際上這種做法現(xiàn)在已經(jīng)不能用了柒傻。尤其是從MySQL 5.7版本開始,已經(jīng)默認(rèn)不使用mysqld_safe來啟動(dòng)了较木,可以改用下面的方法:
#在啟動(dòng)mysqld之前红符,執(zhí)行命令export LD_PRELOAD=/lib64/libjemalloc.so#然后再正常啟動(dòng)mysqld即可,例如/usr/local/mysql/bin/mysqld --default-file=/mysql/mysql-8.0/my.cnf &
LD_PRELOAD是個(gè)環(huán)境變量,用于動(dòng)態(tài)庫(kù)的加載预侯,動(dòng)態(tài)庫(kù)加載的優(yōu)先級(jí)最高致开。
一般情況下,其加載順序?yàn)椋?/p>
LD_PRELOAD>LD_LIBRARY_PATH => /etc/ld.so.cache => /lib => /usr/lib
然后執(zhí)行下面的命令確認(rèn)是否正確加載了:
[root@imysql ~]# lsof -p `pidof mysqld` | grep -i jemallocmysqld 21481 mysql mem REG 253,0 212096 1600 /usr/lib64/libjemalloc.so.1
如果能看到類似上面的結(jié)果萎馅,就表示成功了双戳。
最后多說一句,也可以考慮采用Google的TCMalloc(Google Performance Tools項(xiàng)目)糜芳,有同學(xué)測(cè)試過飒货,其內(nèi)存管理效率比Jemalloc還要略好些。
延伸閱讀
Jemalloc項(xiàng)目:https://github.com/jemalloc/jemalloc
TCMalloc項(xiàng)目:https://github.com/gperftools/gperftools