Jemalloc优化MySQL和Nginx

 更新时间:2016年01月18日 11:17:08   投稿:mrr  
这篇文章主要介绍了Jemalloc优化MySQL和Nginx的相关资料,需要的朋友可以参考下

jemalloc源于Jason Evans 2006年在BSDcan conference发表的论文:《A Scalable Concurrent malloc Implementation for FreeBSD》。jason认为phkmalloc(FreeBSD's previous malloc implementation by Kamp (1998))没有考虑多处理器的情况,因此在多线程并发下性能低下(事实如此),而jemalloc适合多线程下内存分配管理。从2007年开始以FreeBSD标准引进来。软件技术革新很多是FreeBSD发起,在FreeBSD应用广泛的技术会慢慢导入到Linux中。

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

最左边的就是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效率更高。

MySQL性能测试--jemalloc内存管理:http://www.linuxeye.com/Linux/1914.html

jemalloc作为可选项已经添加到《lnmp最新源码一键安装包》

安装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

方法一:

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

-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF

方法二:

直接加载修改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优化Nginx是否生效,如下

lsof -n | grep jemalloc

相关文章

  • Java循环终止的实现方式总结

    Java循环终止的实现方式总结

    循环是一种重复执行一段代码的结构,Java提供了四种主要的循环结构,本文主要来和大家介绍一下Java循环终止的实现方式,有需要的小伙伴可以参考一下
    2023-10-10
  • hystrix配置中Apollo与Archaius对比分析

    hystrix配置中Apollo与Archaius对比分析

    这篇文章主要为大家介绍了hystrix的配置中Apollo与Archaius对比分析,并为大家解答在hystrix的配置中有了Apollo是否还需要Archaius这一问题详解
    2022-02-02
  • java 定时同步数据的任务优化

    java 定时同步数据的任务优化

    这篇文章主要介绍了java 定时同步数据的任务优化,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-12-12
  • java实现微信退款功能

    java实现微信退款功能

    这篇文章主要为大家详细介绍了java实现微信退款功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • 基于Java的MathML转图片的方法(示例代码)

    基于Java的MathML转图片的方法(示例代码)

    最近接到一个新需求mathML转图片怎么实现呢?刚开始还真是蒙圈了,不知道怎么实现,今天小编记录一种基于Java的MathML转图片的方法,感兴趣的朋友一起看看吧
    2021-06-06
  • Java 自旋锁(spinlock)相关知识总结

    Java 自旋锁(spinlock)相关知识总结

    这篇文章主要介绍了Java 自旋锁(spinlock)相关知识总结,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2021-02-02
  • 关于mybatis传入参数一直为null的问题

    关于mybatis传入参数一直为null的问题

    这篇文章主要介绍了关于mybatis传入参数一直为null的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • java获取当前时间的四种方法代码实例

    java获取当前时间的四种方法代码实例

    这篇文章主要介绍了java获取当前时间的四种方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Springboot 多租户SaaS搭建方案

    Springboot 多租户SaaS搭建方案

    这篇文章主要介绍了Springboot 多租户SaaS方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Java 线程优先级详解及实例

    Java 线程优先级详解及实例

    这篇文章主要介绍了Java 线程优先级详解及实例的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论