使用TCMalloc优化mysql
TCMalloc(Thread-Caching Malloc)是google-perftools工具中的一个,与标准的glibc库的malloc相比,TCMalloc在内存的分配上效率和速度要高得多,可以提高Mysql服务器在高并发情况下的性能,降低系统负载.
Google-perftools的项目地址:http://code.google.com/p/google-perftools/
从http://code.google.com/p/google-perftools/ 下载源码包,现在最新版本是1.9.1.
mysql服务器只需要用so动态库就可以了,没有必须要把其他的文件(头文件静态库文档等)也安装到/usr/local/里.
1.下载并安装TCMalloc
wget -c http://google-perftools.googlecode.com/files/google-perftools-1.9.1.tar.gz
tar zxf google-perftools-1.9.1.tar.gz && cd google-perftools-1.9.1
./configure
这里make没有报错的话,那就可以继续make install
make && make install
安装成功后再来安装mysql
2.下载mysql并安装
wget -c http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.45.tar.gz
tar zxf mysql-5.1.45.tar.gz && cd mysql-5.1.45
CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti -fomit-frame-pointer -ffixed-ebp" \
./configure --prefix=/usr/local/mysql --enable-assembler --with-client-ldflags=-all-static \
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \
--with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all \
--with-readline --enable-local-infile --enable-thread-safe-client \
--with-big-tables --without-debug
3.整合mysql和tcmalloc
让mysql加入动态库
cd /usr/local/mysql/bin
vi mysqld_safe 修改mysql服务的启动脚本mysqld_safe,在"# executing mysqld_safe"行后添加:
export LD_PRELOAD="/usr/local/lib/libtcmalloc.so"
重启mysql
Google-perftools的项目地址:http://code.google.com/p/google-perftools/
从http://code.google.com/p/google-perftools/ 下载源码包,现在最新版本是1.9.1.
mysql服务器只需要用so动态库就可以了,没有必须要把其他的文件(头文件静态库文档等)也安装到/usr/local/里.
1.下载并安装TCMalloc
wget -c http://google-perftools.googlecode.com/files/google-perftools-1.9.1.tar.gz
tar zxf google-perftools-1.9.1.tar.gz && cd google-perftools-1.9.1
./configure
这里make没有报错的话,那就可以继续make install
make && make install
安装成功后再来安装mysql
2.下载mysql并安装
wget -c http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.45.tar.gz
tar zxf mysql-5.1.45.tar.gz && cd mysql-5.1.45
CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti -fomit-frame-pointer -ffixed-ebp" \
./configure --prefix=/usr/local/mysql --enable-assembler --with-client-ldflags=-all-static \
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \
--with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all \
--with-readline --enable-local-infile --enable-thread-safe-client \
--with-big-tables --without-debug
configure时不能有这一个参数 with-mysqld-ldflags=-all-static,否则加载失败.
如果你非要静态编译,那么你可以试试:
--with-mysqld-ldflags=-all-static
--with-mysqld-ldflags=-ltcmalloc
网上都写成了--with-mysqld-ldflags="-all-static -ltcmalloc",结果make错误,分开写没问题
--enable-thread-safe-client 有人说必须要这项.
64位的不要试上面的静态编译参数.
然后再执行:
make && make install
先不要启动mysql,我们还要让mysql和tcmalloc整合起来.3.整合mysql和tcmalloc
让mysql加入动态库
cd /usr/local/mysql/bin
vi mysqld_safe 修改mysql服务的启动脚本mysqld_safe,在"# executing mysqld_safe"行后添加:
export LD_PRELOAD="/usr/local/lib/libtcmalloc.so"
重启mysql
service mysqld restart或/etc/init.d/mysqld restart
好了,可以看到成功了,再附上个mysql自动安装脚本,mysql 5.3的请不要使用.附件下载:
mysqlserver.rar 3.23KB
OEL6都是没问题!