文档章节

Jemalloc优化MySQL和Nginx

满小茂
 满小茂
发布于 2016/01/17 21:55
字数 423
阅读 2885
收藏 15

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

图片来源: facebook

最左边的就是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

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


本文转载自:http://my.oschina.net/lj2007331/blog/159573

满小茂
粉丝 79
博文 122
码字总数 138345
作品 0
成都
程序员
私信 提问
jemalloc优化MySQL、Nginx内存管理

上一篇文章《TCMalloc优化MySQL、Nginx、Redis内存管理》,下面来看下jemalloc jemalloc源于Jason Evans 2006年在BSDcan conference发表的论文:《A Scalable Concurrent malloc Implementa...

lj2007331
2013/09/06
779
0
Nginx/Tengine下的内存优化,tcmalloc与jemalloc

1, googler开发的google-perftools优化Nginx和MySQL的内存管理; 2, Tengine链接jemalloc库,运行时用jemalloc来分配和释放内存。 也就是tcmalloc与jemalloc, 这两者什么关系, Nginx/Tengine...

ColinQi
2013/05/06
9.5K
2
一键PHP/JAVA安装工具--OneinStack

OneinStack – 一键PHP/JAVA安装工具 OneinStack包含以下组合: lnmp(Linux + Nginx+ MySQL+ PHP) lamp(Linux + Apache+ MySQL+ PHP) lnmpa(Linux + Nginx+ MySQL+ PHP+ Apache):Ngi......

lj2007331
2015/08/04
3.6K
0
OneinStack 1.0 发布,一键 PHP/JAVA 安装工具

这个脚本是使用shell编写,为了快速在生产环境上部署lnmp/lamp/lnmpa/lnmt(Linux、Nginx/Tengine、 MySQL/MariaDB/Percona、PHP、Apache、Tomcat),适用于CentOS 5~7(包括redhat)、Debia...

lj2007331
2015/09/01
5.1K
21
TCMalloc优化MySQL、Nginx、Redis内存管理

TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多。TCMalloc是 google-perftools工具中的一个(gperftools四个工具...

lj2007331
2013/09/02
894
0

没有更多内容

加载失败,请刷新页面

加载更多

js中将字符串转换成json的三种方式

使用ajax的开发项目过程中,经常需要将json格式的字符串返回到前端,前端解析成js对象(JSON )。 ECMA-262(E3) 中没有将JSON概念写到标准中,还好在 ECMA-262(E5) 中JSON的概念被正式引入了...

物种起源-达尔文
22分钟前
6
0
centos7下面python3.7安装

我这里使用的是CentOS7,默认系统自带python2.7的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的...

chenhongjiang
28分钟前
5
0
带你入门SpringCloud统一配置 | SpringCloud Config

前言 在微服务中众多服务的配置必然会出现相同的配置,如果配置发生变化需要修改,一个个去修改然后重启项目的方案是绝对不可取的。而 SpringCloud Config 就是一个可以帮助你实现统一配置选...

桌前明月
28分钟前
5
0
9.21 日常记录

先说说最近的状态: 一句话,很不好。缺失了目标感,做什么事都是浑浑噩噩的。 每天都是想着轻松的活路去做复习,没有看书,根本没有去思考如何让自己变得更好。 回想起年初的约定,也是一个...

Garphy
38分钟前
5
0
借助Python 函数进行模块化代码

你是否对函数、类、方法、库和模块等花哨的编程术语感到困惑?你是否在与变量作用域斗争?无论你是自学成才的还是经过正式培训的程序员,代码的模块化都会令人困惑。但是类和库鼓励模块化代码...

问题终结者
41分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部