此方法管理mysql内存也存在一定的弊端,根据自身情况进行选择
优点: jemalloc的确能对内存做一定优化,但是发现并不能解决所有内存碎片问题,只能说有一定缓解作用。
缺点: 使用jemalloc会带来内存增加问题,内存的消耗跟使用内存成正比,即申请内存越多,jemalloc消耗额外内存也越多。
经过查询资源,发现可以通过环境变量来进行一定的优化
export MALLOC_CONF=tcache:false,thp:never,retain:false
上述环境变量可以缓解内存异常增加问题。在此记录一个事故,有次我配置的是export MALLOC_CONF=tcache:false,retain:false,发现加载某些动态库会直接崩溃。
export MALLOC_CONF=dirty_decay_ms:0,muzzy_decay_ms:0
配置上述变量,本意是为了快速回收内存,减少内存占用,结果发现在频繁申请的内存的场景,cpu使用率会上涨20%左右,在cpu使用率比较高的场景中不建议配置
缺点2:使用jemalloc管理内存时,在不同的架构效果也不同,内核page size是64KB时会出现内存激增的情况
可参考以下文章测试结果:MySQL使用jemalloc作为内存管理器时的解决方法-电子发烧友网
一.下载安装jemalloc
# wget https://github.com/jemalloc/jemalloc/releases/jemalloc-5.2.0.tar.gz2
# tar jxvf jemalloc-5.2.0.tar.gz2
# cd jemalloc-5.2.0
# ./autogen.sh
# ./configure --prefix=/usr/local/jemalloc
# make && make install
二.在mysqld_safe文件中导入
# vim /usr/local/mysql/bin/mysqld_safe
# executing mysqld_safe
# jemalloc
export LD_PRELOAD=/usr/local/lib/libjemalloc.so
三.查看是否导入成功
# lsof -n | grep jemalloc