Jemalloc優化MySQL和Nginx。本站提示廣大學習愛好者:(Jemalloc優化MySQL和Nginx)文章只能為提供參考,不一定能成為您想要的結果。以下是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從各方評測的成果可見與谷歌 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