歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> jemalloc優化MySQL、Nginx內存管理

jemalloc優化MySQL、Nginx內存管理

日期:2017/2/27 15:57:49   编辑:Linux教程
上一篇文章《TCMalloc優化MySQL、Nginx、Redis內存管理》,下面來看下jemalloc

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都不相伯仲,皆為內存管理器領域最高水平。如下圖:

圖片來源: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效率更高。

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
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是否生效,如下
lsof -n | grep jemalloc
Copyright © Linux教程網 All Rights Reserved