技术说明:

TCMalloc 全称Thread-Cachig Malloc,是谷歌开发的开源工具Google-preftools中的一个成员。与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,在很大程度上提高了服务器在高并发情况下的性能,从而降低了系统的负载。

一.安装libunwind

1.安装libunwind:

http://download.savannah.gnu.org/releases/libunwind/

下载libunwind-0.99.tar.gz

2.tar –zxvf libunwind-0.99.tar.gz

3.cd libunwind-0.99

4.CFLAGS=-fPIC ./configure

5.make CFLAGS=-fPIC

6.make CFLAGS=-fPIC install

7.echo "/usr/local/lib" >/etc/ld.so.conf.d/usr_local_lib.conf

8./sbin/ldconfig

二.安装google-preftools:

1.下载地址:

http://download.chinaunix.net/download.php?id=32582&ResourceID=12865

下载google-perftools-1.9.tar.gz

2. chmod 700 google-perftools-1.9.tar.gz

3. tar -zxvf google-perftools-1.9.tar.gz

4. cd google-perftools-1.9

5. ./configure

6. make && make install

7. echo "/usr/local/lib" >/etc/ld.so.conf.d/usr_local_lib.conf

8./sbin/ldconfig

三.重新编译Nginx:

1. cd nginx-1.5.8

2../configure  --with-google_perftools_module --user=www --group=www --prefix=/usr/local/nginx  --with-http_stub_status_module

3. make && make install

四.为google-perftools添加线程目录:

mkdir –p /tmp/tcmalloc

chmod 0777 /tmp/tcmalloc

五.修改Nginx主配置文件:

vim /usr/local/nginx/conf/nginx.conf:

#pid logs/nginx.pid;

google_perftools_profiles /tmp/tcmalloc;

六.验证google-perftools正常加载,命令查看方式:

lsof –n |grep tcmalloc

[root@localhost conf]# lsof -n |greptcmalloc

nginx    15017       www   10w     REG              253,0         0    801420 /tmp/tcmalloc.15017

nginx    15018       www   12w     REG              253,0         0    801417 /tmp/tcmalloc.15018

nginx    15019       www   14w     REG              253,0         0    801415 /tmp/tcmalloc.15019

nginx    15020       www   16w     REG              253,0         0    784898 /tmp/tcmalloc.15020

nginx    15021       www   18w     REG              253,0         0    801274 /tmp/tcmalloc.15021

nginx    15022       www   20w     REG              253,0         0    801414 /tmp/tcmalloc.15022

nginx    15023       www   22w     REG              253,0         0    801418 /tmp/tcmalloc.15023

nginx    15024       www   24w     REG              253,0         0    801419 /tmp/tcmalloc.15024

Nginx的主配置文件Nginx.conf中设置worker_processes的值为8,所以开启了8Nginx线程,每个线程有一行记录。每个线程文件后面的数字值就是启动的Nginxpid值。

  利用TCMalloc优化Nginx可以提高服务器在高并发下的性能,降低系统负载,使服务器稳定、高效运行!