Jemalloc優(yōu)化MySQL和Nginx
jemalloc源于Jason Evans 2006年在BSDcan conference發(fā)表的論文:《A Scalable Concurrent malloc Implementation for FreeBSD》。jason認為phkmalloc(FreeBSD's previous malloc implementation by Kamp (1998))沒有考慮多處理器的情況,因此在多線程并發(fā)下性能低下(事實如此),而jemalloc適合多線程下內存分配管理。從2007年開始以FreeBSD標準引進來。軟件技術革新很多是FreeBSD發(fā)起,在FreeBSD應用廣泛的技術會慢慢導入到Linux中。
Redis 2.4版本之后,默認使用jemalloc來做內存管理;tengine也整合jemalloc。jemalloc從各方評測的結果可見與google tcmalloc都不相伯仲,皆為內存管理器領域最高水平。如下圖:
最左邊的就是glibc的malloc,最右邊的就是jemalloc。從圖表上可以看出,jemalloc的性能有glibc的兩倍以上。非常壓倒性的性能差異。因此,使用了jemalloc的應用程序自然會快很多。Jemalloc旁邊的就是tcmalloc。Tcmalloc的性能與其相差甚微,低jemalloc2.1.0慢4.5%。圖上和tcmalloc的1.4版本,而現(xiàn)在已經到2.1版本,因此實際上這兩者應該是不相仲伯的。Jemalloc的創(chuàng)始人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優(yōu)化MySQL
方法一:
MySQL/MaridDB 5.5編譯方法,cmake預編譯時加上下面參數(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
重新啟動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優(yōu)化Nginx
編譯NGINX時添加以下參數(shù):
--with-ld-opt="-ljemalloc"
具體實現(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
驗證jemalloc優(yōu)化Nginx是否生效,如下
lsof -n | grep jemalloc
- nginx php-fpm 小VPS 優(yōu)化
- Nginx服務器高性能優(yōu)化的配置方法小結
- 對Nginx支持SSL的性能進行優(yōu)化的方法
- 一些優(yōu)化Nginx服務器的技巧簡介
- Nginx配置優(yōu)化詳解
- Nginx優(yōu)化配置和內核優(yōu)化 實現(xiàn)突破十萬并發(fā)
- 為高負載網絡優(yōu)化Nginx和Node.js的方法
- 使用google-perftools優(yōu)化nginx在高并發(fā)時的性能的教程(完整版)
- Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小內存VPS服務器上的配置優(yōu)化
- Nginx服務器配置性能優(yōu)化方案
相關文章
Java 并發(fā)編程之ThreadLocal詳解及實例
這篇文章主要介紹了Java 并發(fā)編程之ThreadLocal詳解及實例的相關資料,需要的朋友可以參考下2017-02-02詳解如何在SpringBoot項目中使用統(tǒng)一返回結果
在一個完整的項目中,如果每一個控制器的方法都返回不同的結果,那么對項目的維護和擴展都會很麻煩。因此,本文為大家準備了SpringBoot項目中使用統(tǒng)一返回結果的方法,需要的可以參考一下2022-10-10Java數(shù)據(jù)結構之圖(動力節(jié)點Java學院整理)
本文章主要講解學習如何使用JAVA語言以鄰接表的方式實現(xiàn)了數(shù)據(jù)結構---圖(Graph)。對java數(shù)據(jù)結構之圖相關知識感興趣的朋友一起學習吧2017-04-04詳解mybatis-plus配置找不到Mapper接口路徑的坑
這篇文章主要介紹了詳解mybatis-plus配置找不到Mapper接口路徑的坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10public?static?void?main(String[]?args)使用解讀
這篇文章主要介紹了public?static?void?main(String[]?args)的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01