Jemalloc優化MySQL和Nginx

Redis 2.4版本以後,默認使用jemalloc來作內存管理;tengine也整合jemalloc。jemalloc從各方評測的結果可見與google tcmalloc都不相伯仲,皆爲內存管理器領域最高水平。以下圖:css

圖片來源: facebookhtml

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

MySQL性能測試–jemalloc內存管理:http://www.linuxeye.com/Linux/1914.html
linux

安裝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預編譯時加上下面參數nginx

-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF


方法2.

    修改mysqld_safe直接加載:sql

    查找文件 /usr/local/mysql/bin/mysqld_safe
    在#executing mysqld_safe 下面加上
shell

  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時添加如下參數:google

--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
相關文章
相關標籤/搜索