TCMalloc優化MySQL、Nginx、Redis記憶體管理
TCMalloc(Thread-Caching Malloc)與標準glibc庫的malloc實現一樣的功能,但是TCMalloc在效率和速度效率都比標準malloc高很多。TCMalloc是 google-perftools工具中的一個(gperftools四個工具分別是:TCMalloc、heap-checker、heap- profiler和cpu-profiler),這個工具是開源的,以原始碼形式釋出。如果覺得自己維護一個記憶體分配器麻煩的話,可以考慮將 TCMalloc靜態庫連線到你的程式中。使用的時候和glibc中的malloc呼叫方式一模一樣。你需要做的只是把TCMalloc的動態庫或者靜態 庫連線進你的程式中,你就可以獲得一個高效,快速,安全的記憶體分配器。
與標準的glibc庫的malloc相比,TCMalloc在記憶體的分配效率和速度要高,可以在高併發的情況下很好的控制記憶體的使用,提高伺服器的效能,降低負載。TCMalloc的實現原理和測試報告請見一篇文章:《TCMalloc:執行緒快取的Malloc》
tcmalloc作為可選項已經新增到《lnmp最新原始碼一鍵安裝包》
安裝libunwind庫:
如果系統是64位的需要先安裝libunwind庫,32位系統則不需要安裝。
libunwind庫為基於64位CPU和作業系統的程式提供了基本的堆疊輾轉開解功能,其中包括用於輸出堆疊跟蹤的API用於以程式設計方式輾轉開解堆疊的API以及支援C++異常處理機制的API。
wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz tar zxf libunwind-1.1.tar.gz cd libunwind-1.1 CFLAGS=-fPIC ./configure make CFLAGS=-fPIC make CFLAGS=-fPIC install cd ../
gperftools的安裝:
wget http://gperftools.googlecode.com/files/gperftools-2.1.tar.gz tar xzf gperftools-2.1.tar.gz cd gperftools-2.1
可以加入引數只編譯tcmalloc(./configure --enable-minimal、--disable-cpu-profiler、--disable-heap-profiler、 --disable-heap-checker、--disable-debugalloc),64位作業系統不安裝libunwind也不會報錯,注意 生成的庫檔案是libtcmalloc_minimal.*
64位作業系統,如下
./configure
32位系統,不需要安裝libunwind,但是一定要新增–enable-frame-pointers引數,如下
./configure --enable-frame-pointers
make && make install
編譯安裝後,輸入以下命令:
echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf ldconfig #必須執行
使用TCMalloc優化MySQL
MySQL 5.1靜態編譯方法,./configure預編譯時假設下面引數
--with-mysqld-ldflags=-ltcmalloc
MySQL 5.5靜態編譯方法,cmake預編譯時加上下面引數
-DCMAKE_EXE_LINKER_FLAGS="-ltcmalloc" -DWITH_SAFEMALLOC=OFF
採用動態載入
sed -i '[email protected] [email protected] mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/[email protected]' /usr/local/mysql/bin/mysqld_safe service mysqld restart
驗證載入tcmalloc在MySQL中是否生效,如下:
lsof -n | grep tcmalloc
使用TCMalloc優化Nginx
為了使nginx支援google-perftools,需要在安裝過程中新增"--with-google_perftools_module"選項重新編譯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-google_perftools_module make && make install
為新增執行緒目錄:
mkdir /tmp/tcmalloc chown -R www.www /tmp/tcmalloc vi /usr/local/nginx/conf/nginx.conf #pid下一行新增 google_perftools_profiles /tmp/tcmalloc;
驗證tcmalloc是否在Nginx中生效
lsof -n | grep tcmalloc
每個執行緒(work_processes的值)會有一行記錄。每個執行緒檔案後面的數字值就是啟動的nginx的pid值。
使用TCMalloc優化redis
注意:redis-2.4以上自帶jemalloc,你不需要加任何引數, 通過zmalloc.c原始碼中我們可以看到,Redis在編譯時,會先判斷是否使用tcmalloc,如果是,會用tcmalloc對應的函式替換掉標準 的libc中的函式實現。其次會判斷jemalloc是否使得,最後如果都沒有使用才會用標準的libc中的記憶體管理函式。所以用tcmalloc優化請 謹慎使用,這兩著分配器碎片率相差不大,建議用自帶jemalloc
cd lnmp/src/redis-2.6.16 make USE_TCMALLOC=yes FORCE_LIBC_MALLOC=yes /bin/cp src/{redis-benchmark,redis-check-aof,redis-check-dump,redis-cli,redis-sentinel,redis-server} /usr/local/redis/bin
相關推薦
TCMalloc優化MySQL、Nginx、Redis記憶體管理
TCMalloc(Thread-Caching Malloc)與標準glibc庫的malloc實現一樣的功能,但是TCMalloc在效率和速度效率都比標準malloc高很多。TCMalloc是 google-perftools工具中的一個(gperftools四個工具分別是:TCMalloc、heap-ch
15套java架構師、集群、高可用、高可擴展、高性能、高並發、性能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式項目實戰視頻教程
mycat 擴展 並發解決方案 入門到 -1 高端 資料 src nio * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java
KVM虛擬化、MySQL、Nginx、RabbitMQ、Redis組件安裝指導
mysql字符集 eas www cat listen copy 測試 arc remove 1 檢查服務器的配置信息 1.1 檢查服務器的CPU信息 [root@localhost iso]#cat /proc/cpuinfo | grep na
大型網際網路公司必備的架構技術棧——分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式專案實戰
效能優化 JVM調優 Java程式效能優化 Tomcat Mysql Spring IOC Spring AOP Spring MVC Spring 5新特性 Mybatis 分散式架構 架構核心服務層技術 架構關鍵技術設施 分散式訊息通訊 非同
Java高架構師、分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式專案實戰學習架構師之路
工作1-5年開發經驗,當你們提出漲工資的時候,或者要offer的時候底氣怎麼樣,是不是底氣十足,不給漲工資就辭職,是不是有自信提出來主管、或者是專案經理都能同意,他們相當設法把你留住。如果這樣你才是成功。什麼技術都沒有何談工資! 給你分析一下這些技術,給大家羅列一些技術,看
9,Linux下的python3,virtualenv,Mysql、nginx、redis安裝配置 常用服務安裝部署
常用服務安裝部署 學了前面的Linux基礎,想必童鞋們是不是更感興趣了?接下來就學習常用服務部署吧! 安裝環境: centos7 + vmware + xshell MYSQL(m
java高級視頻課程Dubbo、Redis、ActiveMQ、Nginx、Mycat、Spring、MongoDB、ZeroMQ、Git、Nosql、Jvm、Mecached、Netty、Nio、Mina
strong 程序設計 queue隊列 frp lin 海量數據 並發解決方案 elkstack line * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架構師、集群、
centos7重啟apache、nginx、mysql、php-fpm命令
httpd stop 啟動 sta fpm start res gin SQ apache 啟動 systemctl start httpd 停止 systemctl stop httpd 重啟 systemctl restart httpd mysql 啟動 system
查看Linux 、Nginx、 MySQL 、 PHP 版本的方法
style tps HR version light gda targe true pac 參考:查看Linux 、Apache 、 MySQL 、 PHP 版本的方法 1.查看Linux版本: uname -a; more /etc/issue; cat /proc/ve
Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架構
Linux Nginx Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架構 目錄 - Nginx系列 Nginx系列-1.Linux下安裝Nginx Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架構 Nginx系列-3.配置Ngi
在Docker下安裝Tomcat、nginx、mysql
安裝Tomcat #搜尋tomcat映象 docker search tomcat #拉取tomcat映象 docker pull tomcat #根據映象啟動tomcat容器 docker run --name tomcat1 -d -p 808
檢視Linux系統、Apche、Nginx、 MySQL 、 PHP 版本
1.檢視Linux版本: 1、uname -a; 2、more /etc/issue; 3、cat /proc/version; 2.檢視Mysql版本: 1、 在終端下執行 mysql -V
CentOS 7 firewalld新增開放埠及重啟apache、nginx、mysql、php-fpm命令 & CentOS 6.5開放埠方法
How to resolve the error message belowFailed to issue method call: Unit firewalld.service is masked. The main reason a service is masked is to prevent acc
Linux下通過logrotate定時清理壓縮軟體日誌,如mysql、nginx、tomcat
tomcat日誌如果放任不管,那麼日誌檔案會越來越大,檢視起來也不方便。另外,如果catalina.out的大小超過了2G,那麼tomcat可能在沒有錯誤提示的情況下崩潰、無法啟動。 所以為了避免出現這個問題,我們應該每天分割catalina.out,logrotate就
java叢集之redis sentinel、nginx、session共享配置詳解
說明 1、看此篇文章之前,你需要對spring 基礎,redis等相關技術基礎. 2、redis 服務端使用2主2從,分佈交叉部署至2臺伺服器,且分佈部署2臺tomcat web應用,兩臺伺服器分別部署2臺nginx來實現負載均衡。 3、你需要對叢集的概念有所
Apache、Nginx、Tomcat、PHP的區別
linuxapachenginxApache、Nginx、Tomcat、PHP的區別Apache和Nginx算是市面上兩款比較強大的WEB服務軟件。Apache的優點:支持模塊多,功能多運行穩定性強支持PHP模塊,無需安裝其他多余的組件就可以實現.php動態頁面的解析地址重寫功能(rewrite)強大Ngin
[原創]在Centos7.2上源碼安裝PHP、Nginx、Zentao禪道
session zip nss markdown src roo -perm mbstring 復制 版本 操作系統:CentOS Linux release 7.2.1511 (Core) PHP:5.6.33 Nginx:1.12.2 MySQL:5.6.38(192
小程序後臺配置 --- CentOS 7.3 64、nginx、node.js
工作 數據 同時 本地 ane get 端口 域名解析 time 小程序後臺配置 目的 配置一個小程序後臺的開發、發布環境,同時保留頂級域名另作他用。 需求: 一個域名 一個主機 一個小程序賬號 系統和軟件 這裏使用CentOS 7.3 64位系統和nginx、node
IIs、Nginx、Apache三大主流web服務器偽靜態的詳細設置過程
IIs Nginx Apache 偽靜態 偽靜態什麽設置 此文章裏面的內容就包含了IIs、Nginx、Apache三大主流web服務器偽靜態詳細的設置。 文章地址http://blog.51cto.com/lccee/2068828IIs、Nginx、Apache三大主流web服務器偽靜態
三大主流軟件負載均衡器對比(LVS、Nginx、HAproxy)
LVS、Nginx HAproxy LVS: 1. 抗負載能力強,性能高,能達到F5的60%,對內存和CPU資源消耗比較低 2. 工作在網絡4層,通過VRRP協議(僅作代理之用),具體的流量是由linux內核來處理,因此沒有流量的產生。 3. 穩定,可靠性高,自身有完美的熱備方案(K