一、前言
1、使用google開發(fā)的google-perftools優(yōu)化Nginx的內(nèi)存分配效率和速度,幫助在高并發(fā)的情況下控制內(nèi)存的使用。
2、TCMalloc在內(nèi)存的分配上效率和速度要比malloc高得多。但是nginx的內(nèi)存占用其實(shí)是很少的,一個(gè)進(jìn)程占用的內(nèi)存大概只有12M左右,所有g(shù)oogle-perftools對(duì)nginx的優(yōu)化效果可能不太明顯。
二、安裝
1、下載并安裝google-perftools
# 從github上下載perftools工具包 shell> wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.7/gperftools-2.7.tar.gz # 注意: # 1、如果是32位系統(tǒng),在configure gperftools的時(shí)候,可以不添加--enable-frame-pointers參數(shù)。 # 2、如果是64位系統(tǒng),需要先安裝libunwind,再在configure gperftools的時(shí)候,添加--enable-frame-pointers參數(shù)。 shell> yum install epel-release -y shell> yum install libunwind-devel -y shell> tar zxvf gperftools-2.7.tar.gz shell> cd gperftools-2.7 shell> ./configure --enable-frame-pointers --enable-libunwind --with-tcmalloc-pagesize=32 shell> make && make install
2、使nginx支持google-perftools
# 重新編譯ngx,添加--with-google_perftools_module # 簡(jiǎn)單演示參數(shù)添加方法,詳細(xì)的nginx安裝過程,請(qǐng)參考《源碼安裝openresty》 shell> ./configure --with-google_perftools_module shell> make && make install
3、配置nginx對(duì)google-perftools的支持
# 添加線程目錄 shell> mkdir /tmp/tcmalloc shell> chmod 0777 /tmp/tcmalloc # 修改nginx.conf,在pid行下面添加如下信息 google_perftools_profiles /tmp/tcmalloc; # 重啟nginx shell> /opt/openresty/nginx/sbin/nginx -s reload # 驗(yàn)證是否支持 shell> lsof -n |grep tcmalloc nginx 1414 nobody 12w REG 252,1 0 1452011 /tmp/tcmalloc.1414 nginx 1415 nobody 14w REG 252,1 0 1452010 /tmp/tcmalloc.1415 # 備注:tcmalloc的記錄文件數(shù)量與nginx.conf中worker_processes的值有關(guān),每個(gè)worker對(duì)應(yīng)一個(gè)tcmalloc文件。
4、可能會(huì)遇到的問題
# 啟動(dòng)nginx,發(fā)現(xiàn)缺少libprofiler.so.0動(dòng)態(tài)庫(kù)的支持 shell> /opt/openresty/nginx/sbin/nginx /opt/openresty/nginx/sbin/nginx: error while loading shared libraries: libprofiler.so.0: cannot open shared object file: No such file or directory # 查找系統(tǒng)下是否有l(wèi)ibprofiler.so.0動(dòng)態(tài)庫(kù) shell> whereis libprofiler.so.0 libprofiler.so: /usr/local/lib/libprofiler.so.0 /usr/local/lib/libprofiler.so # 由于不在nginx程序查找的目錄下,所以需要?jiǎng)?chuàng)建軟鏈接 # 評(píng)估缺少的動(dòng)態(tài)庫(kù)支持,可通過ldd /opt/openresty/nginx/sbin/nginx的方式,查看"not found"部分。 shell> ln -s /usr/local/lib/libprofiler.so.0.4.18 /lib64/libprofiler.so.0
至此,nginx下的google-perftools優(yōu)化安裝完成。
作者:龍龍小寶
原文:https://www.cnblogs.com/91donkey/p/11513175.html