使用TCMalloc优化mysql

post by rocdk890 / 2012-1-9 15:18 Monday linux技术
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

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的请不要使用.
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-97.html

附件下载:
mysqlserver.rar 3.23KB

标签: mysql 优化 tcmalloc 性能

  1. 2012-11-15 11:31
    @javacty:说真的 我真没有看懂你想说什么
  1. gravatar javacty
    2012-11-14 20:47
    u12下/etc/init/mysql启动脚本好像不是调用mysqld_safe脚本启动mysql的,尝试各种修改1sudo lsof -n |grep tcmalloc查看都没效果?

    OEL6都是没问题!

评论: