使用jemalloc优化java_Jemalloc优化MySQL和Nginx

Redis 2.4版本之后,默认使用jemalloc来做内存管理;tengine也整合jemalloc。jemalloc从各方评测的结果可见与google tcmalloc都不相伯仲,皆为内存管理器领域最高水平。如下图:

3dd95b4e37e40a185be78b68796dce1d.png

最左边的就是glibc的malloc,最右边的就是jemalloc。从图表上可以看出,jemalloc的性能有glibc的两倍以上。非常压 倒性的性能差异。因此,使用了jemalloc的应用程序自然会快很多。Jemalloc旁边的就是tcmalloc。Tcmalloc的性能与其相差甚 微,低jemalloc2.1.0慢4.5%。图上和tcmalloc的1.4版本,而现在已经到2.1版本,因此实际上这两者应该是不相仲伯的。 Jemalloc的创始人jason evans也意识到这一点,说在cpu core 8以上的计算机上jemalloc效率更高。

安装jemalloc

cd lnmp/src

wget http://www.canonware.com/download/jemalloc/jemalloc-3.4.0.tar.bz2

tar xjf jemalloc-3.4.0.tar.bz2

cd jemalloc-3.4.0 ./configure

make && make install

echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf

ldconfig

使用jemalloc优化MySQL

方法1.

MySQL/MaridDB 5.5编译方法,cmake预编译时加上下面参数

-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF

方法2.

修改mysqld_safe直接加载:

查找文件 /usr/local/mysql/bin/mysqld_safe

在#executing mysqld_safe 下面加上

LD_PRELOAD=/usr/local/lib/libjemalloc.so

重新启动MYSQL

使用下面代码自动修改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

编译NGINX时添加以下参数:

--with-ld-opt="-ljemalloc"

具体实现:

cd lnmp/src/nginx-1.4.2

make clean

./configure --prefix=/usr/local/nginx --user=www --group=www \

--with-http_stub_status_module --with-http_ssl_module --with-http_flv_module \

--with-http_gzip_static_module --with-ld-opt="-ljemalloc"

make && make install

验证 jemalloc 是否运行:

lsof -n | grep jemalloc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值