TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具“google-perftools”中的一个成员。与标准的glibc库的malloc相比,TCMalloc库在 内存分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况下的性能,从而降低系统负载。下面简单介绍如何为Nginx添加TCMalloc 库支持。 要安装TCMalloc库,需要安装libunwind(32位操作系统不需要安装)和google-perftools两个软件包,libunwind 库为基于64位CPU和操作系统的程序提供了基本函数调用链和函数调用寄存器功能。下面介绍利用TCMalloc优化Nginx的具体操作过程
下载所需源码包
libunwind-1.1.tar.gz
gperftools-2.1.tar.gz
第一步安装
tar zxvf libunwind-1.1.tar.gz
cd libunwind-1.1/ CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install
第二步
tar xzvf gperftools-2.1.tar.gz cd gperftools-2.1然后开始配置:
./configuremake make install到这里安装google-perftools完成了但未生效,接下来需要使google-perftools生效:
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf /sbin/ldconfig注意,这里的双引号是英文的。
到这里安装google-perftools完成.
为了使Nginx支持google-perftools,需要加上--with-google_perftools_module重新编译Nginx,如果不知道如何安装Nginx,可以从这里查看Nginx安装教程.
例如:第一次安装,则直接加入红色参数即可
./configure --user=www --group=www --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module --with-openssl= \
--with-http_addition_module \
--with-zlib= \
--with-google_perftools_module如:已经安装,需加入新模块,下载nginx安装包,编译加入这个模块即可
cd nginx-1.8.1 ./configure --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --prefix=/usr/local/nginx --with-zlib= --with-google_perftools_module make
注意make即可,不需要make install 不然就是全部覆盖
后把
原/usr/local/nginx/sbin下的nginx 备份移除
把那个已经编译的nginx下目录中的objs/nginx拷贝到/usr/local/nginx/sbin
cp objs/nginx /usr/local/nginx/sbin/
接下来为google-perftools添加线程目录:
mkdir /tmp/tcmalloc
chmod 0777 /tmp/tcmalloc
修改nginx配置文件
修改/usr/local/nginx/conf/ncing.conf
在pid这行的下面添加
#pid logs/nginx.pid; google_perftools_profiles /tmp/tcmalloc;
重新启动nginx:
service nginx restart验证是否正在运行:
lsof -n | grep tcmalloc