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的性能与其相差甚微,比 Jemalloc 2.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

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

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

最新文章

  1. Jquery实现特效滑动菜单栏
  2. 点击jqGrid表格,弹出需要的表格的数据
  3. macd综合版
  4. HTML5结合百度地图API创建地图应用
  5. HBase的shell命令行界面按退格键(Backspace)无法删除问题
  6. MMU讲解
  7. javascript 作用域例子
  8. POJ2004 Mix and build Trie树? dp?
  9. SQL大数据查询分页存储过程
  10. struts2与velocity的整合有两种方式
  11. 简述Android系统内存不足时候,内存回收机制
  12. Tomcat中虚拟路径
  13. 使用WebGL 自定义 3D 摄像头监控模型
  14. Spring Cloud微服务实践之路- Eureka Server 中的第一个异常
  15. Westore 1.0 正式发布 - 小程序框架一个就够
  16. 【Clojure 基本知识】 关于函数参数的各种高级用法
  17. ajax之同步异步详解
  18. Power BI Embedded 与 Bot Framework 结合的AI报表系统
  19. PHP简单模拟登录功能实例分享
  20. apache+svn+ldap集成

热门文章

  1. sql server 2008 r2 中的oracle发布使用笔记
  2. 打印从1到最大的n位数
  3. JQuery基础教程:入门
  4. HDU1232畅通工程
  5. 009 The Interfaces In JAVA(官网文档翻译)
  6. Leveldb 实现原理
  7. Android开发-API指南-Intent和Intent过滤器
  8. flash上传在spring mvc中出现的问题2
  9. MSP430F149学习之路——捕获/比较模式
  10. linux查看内存和回收内存