您当前的位置:首页 > 学海无涯 > 心得笔记网站首页心得笔记
Jemalloc内存管理优化
发布时间:2015-11-03作者:佚名
Jemalloc起源于Jason Evans 2006年在BSDcan conference发表的论文:A Scalable Concurrent malloc Implementation for FreeBSD。
Jason认为phkmalloc(FreeBSD’s previous malloc implementation by Kamp (1998))没有考虑多处理器的情况,因此在多线程并发下性能低下(事实如此),而jemalloc适合多线程下内存分配管理。
Redis 2.4版本之后,默认使用jemalloc来做内存管理;tengine也整合jemalloc。Jemalloc从各方评测的结果可见与google tcmalloc都不相伯仲,皆为内存管理器领域最高水平。如下图:
安装jemalloc
项目主页: https://github.com/jemalloc/jemalloc/releases
tar xjf jemalloc-4.0.4.tar.bz2 cd jemalloc-4.0.4 ./configure make && make install echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf ldconfig
使用jemalloc优化MySQL
MySQL/MaridDB 5.5编译方法,cmake预编译时加上下面参数
-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc' -DWITH_SAFEMALLOC=OFF
或者直接加载,修改mysqld_safe
sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' /usr/local/mysql/bin/mysqld_safe service mysqld restart
使用jemalloc优化Nginx
编译时加入以下参数
1 | --with-ld-opt='-ljemalloc' |
使用jemalloc优化Tengine
编译时加入以下参数
1 | --with-jemalloc |
验证jemalloc优化是否生效,如下
lsof -n | grep jemalloc
关键字词:内存优化,Jemalloc,Nginx,Mysql,优化

下一篇:Mysql优化