cMalloc内存分配器,能提升高并发下的性能,降低系统的负载。能降低多线程程序之间的锁争用问题,在小对象上可以达到最小争用。
Linux下tcmalloc安装
1、安装Tcmalloc
# wget http://gperftools.googlecode.com/files/gperftools-2.1.tar.gz
# cd gperftools-2.1
# ./configure
# make && make install
默认路径为/usr/local,Tcmalloc库安装在/usr/local/lib目录
2、TCmaloc库加载到Linux系统中:
# echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
# /sbin/ldconfig
END
tcmalloc优化mysql
1、修改MySQL启动脚本(依据MySQL安装位置):
vi /usr/local/mysql/bin/mysqld_safe
在# executing mysqld_safe的下一行,添加:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
保存退出,并重启MySQL。
2、依据lsof验证命令查看tcmalloc是否起效:
# lsof |grep -i libtcmalloc.so
如果发现以下信息,说明tcmalloc已经起效:
mysqld 13961 mysql mem REG 253,0 1948990 196421/usr/local/lib/libtcmalloc.so.4.1.2
END
Tcmalloc优化Nginx
1、Nginx安装过程中添加"–with-google_perftools_module"
cd lnmp/src/nginx-1.5.10 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
2、添加线程目录,具体如下:
# mkdir /tmp/tcmalloc
# chown -R www.www /tmp/tcmalloc
# vim nginx.conf
···
pid logs/nginx.pid;
google_perftools_profiles /tmp/tcmalloc/;
···
3、验证tcmalloc是否生效
lsof -n | grep tcmalloc
每个线程(work_processes的值)会有一行记录,每个线程文件后面的数字值就是启动的nginx的pid值。