Jemalloc優(yōu)化MySQL和Nginx
jemalloc源于Jason Evans 2006年在BSDcan conference發(fā)表的論文:《A Scalable Concurrent malloc Implementation for FreeBSD》。jason認(rèn)為phkmalloc(FreeBSD's previous malloc implementation by Kamp (1998))沒有考慮多處理器的情況,因此在多線程并發(fā)下性能低下(事實(shí)如此),而jemalloc適合多線程下內(nèi)存分配管理。從2007年開始以FreeBSD標(biāo)準(zhǔn)引進(jìn)來。軟件技術(shù)革新很多是FreeBSD發(fā)起,在FreeBSD應(yīng)用廣泛的技術(shù)會(huì)慢慢導(dǎo)入到Linux中。
Redis 2.4版本之后,默認(rèn)使用jemalloc來做內(nèi)存管理;tengine也整合jemalloc。jemalloc從各方評(píng)測(cè)的結(jié)果可見與google tcmalloc都不相伯仲,皆為內(nèi)存管理器領(lǐng)域最高水平。如下圖:

最左邊的就是glibc的malloc,最右邊的就是jemalloc。從圖表上可以看出,jemalloc的性能有g(shù)libc的兩倍以上。非常壓倒性的性能差異。因此,使用了jemalloc的應(yīng)用程序自然會(huì)快很多。Jemalloc旁邊的就是tcmalloc。Tcmalloc的性能與其相差甚微,低jemalloc2.1.0慢4.5%。圖上和tcmalloc的1.4版本,而現(xiàn)在已經(jīng)到2.1版本,因此實(shí)際上這兩者應(yīng)該是不相仲伯的。Jemalloc的創(chuàng)始人jason evans也意識(shí)到這一點(diǎn),說在cpu core 8以上的計(jì)算機(jī)上jemalloc效率更高。
MySQL性能測(cè)試--jemalloc內(nèi)存管理:http://www.linuxeye.com/Linux/1914.html
jemalloc作為可選項(xiàng)已經(jīng)添加到《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優(yōu)化MySQL
方法一:
MySQL/MaridDB 5.5編譯方法,cmake預(yù)編譯時(shí)加上下面參數(shù)
-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
重新啟動(dòng)MYSQL
使用下面代碼自動(dòng)修改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優(yōu)化Nginx
編譯NGINX時(shí)添加以下參數(shù):
--with-ld-opt="-ljemalloc"
具體實(shí)現(xiàn):
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
驗(yàn)證jemalloc優(yōu)化Nginx是否生效,如下
lsof -n | grep jemalloc
- nginx php-fpm 小VPS 優(yōu)化
- Nginx服務(wù)器高性能優(yōu)化的配置方法小結(jié)
- 對(duì)Nginx支持SSL的性能進(jìn)行優(yōu)化的方法
- 一些優(yōu)化Nginx服務(wù)器的技巧簡(jiǎn)介
- Nginx配置優(yōu)化詳解
- Nginx優(yōu)化配置和內(nèi)核優(yōu)化 實(shí)現(xiàn)突破十萬并發(fā)
- 為高負(fù)載網(wǎng)絡(luò)優(yōu)化Nginx和Node.js的方法
- 使用google-perftools優(yōu)化nginx在高并發(fā)時(shí)的性能的教程(完整版)
- Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小內(nèi)存VPS服務(wù)器上的配置優(yōu)化
- Nginx服務(wù)器配置性能優(yōu)化方案
相關(guān)文章
Failed to execute goal org...的解決辦法
這篇文章主要介紹了Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解決辦法的相關(guān)資料,需要的朋友可以參考下2017-06-06
Spring自動(dòng)配置之condition條件判斷上篇
這篇文章主要為大家介紹了SpringBoot condition條件判斷功能的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
SpringBoot配置MyBatis-Plus實(shí)現(xiàn)增刪查改
本文主要介紹了SpringBoot配置MyBatis-Plus實(shí)現(xiàn)增刪查改,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
Java網(wǎng)絡(luò)編程之簡(jiǎn)單的服務(wù)端客戶端應(yīng)用實(shí)例
這篇文章主要介紹了Java網(wǎng)絡(luò)編程之簡(jiǎn)單的服務(wù)端客戶端應(yīng)用,以實(shí)例形式較為詳細(xì)的分析了java網(wǎng)絡(luò)編程的原理與服務(wù)器端客戶端的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
Java中static與instance的區(qū)別及作用詳解
這篇文章主要為大家介紹了Java中static與instance的區(qū)別及作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
MyBatis-Plus實(shí)現(xiàn)條件查詢的三種格式例舉詳解
本文主要介紹了MyBatis-Plus三中條件查詢格式的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
使用監(jiān)聽器對(duì)Spring bean id進(jìn)行唯一校驗(yàn)過程解析
這篇文章主要介紹了使用監(jiān)聽器對(duì)Spring bean id進(jìn)行唯一校驗(yàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08

