TCMalloc(Thread-Caching Malloc)是google-perftools工具中的一个,与标准的glibc库的malloc相 比,TCMalloc在内存的分配上效率和速度要高得多,能够提升Mysql服 务器在高并发状况下的性能,下降系统负载。html
Google-perftools的项目:http://code.google.com/p/google-perftools/mysql
google-perftools
包括
TCMalloc
、heap-checker
、heap-profiler
和cpu-profiler
共4
个组件,在只 用
TCMalloc
的场景下,能够不编译其余三个组件,使用tcmalloc_minimal
就足够。
下面介绍在Linux SUSE x86
上安装
TCMalloc
动态库的过程。
wget http://google-perftools.googlecode.com/files/google-perftools-1.4.tar.gz
tar zxvf google-perftools-1.4.tar.gz
cd google-perftools-1.4
Mysql
服 务器只须要用SO
动态库就能够了,没有必需要把其余的文件(
头文件静态库文档等)
也安装到/usr/local/
里。先安装到一个临时文件夹:
mkdir /tmp/tc
./configure --prefix=/tmp/tc --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal
加上后面的几个参数是指只生成tcmalloc_minimal
。
./configure --prefix=/tmp/tc
若是要将文件直接安装到文件,就不须要临时目录了,可:
./configure
使用./configure –h
可查看安装选项。
编译安装:
make && make install
ls -alt /tmp/tc/lib/*
使用了最小安装,拷贝tcmalloc_minimal
的动态库到系统库目录:
cp /tmp/tc/lib/
libtcmalloc_minimal.so.0.0.0
/usr/local/lib
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so.0
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so.0.0.0
rm -rf /tmp/tc
修改
mysql
服 务的启动脚本mysqld_safe
,在“ # executing mysqld_safe
”行后添加行:
export LD_PRELOAD="/usr/local/lib/libtcmalloc.so"
/usr/local/mysql/bin/mysqladmin shutdown
验证
mysqld 32398 mysql mem REG 8,3 668454 1477703 /usr/local/lib/libtcmalloc_minimal.so.0.0.0