tcmalloc mysql 缓存_Tcmalloc优化Mysql内存管理

实验环境:

OS:Redhat 5.3 64bit

Mysql:mysql 5.5.29

TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多。TCMalloc是 google-perftools工具中的一个(gperftools四个工具分别是:TCMalloc、heap-checker、heap- profiler和cpu-profiler),这个工具是开源的,以源码形式发布。如果觉得自己维护一个内存分配器麻烦的话,可以考虑将 TCMalloc静态库连接到你的程序中。使用的时候和glibc中的malloc调用方式一模一样。你需要做的只是把TCMalloc的动态库或者静态 库连接进你的程序中,你就可以获得一个高效,快速,安全的内存分配器。

与标准的glibc库的malloc相比,TCMalloc在内存的分配效率和速度要高,可以在高并发的情况下很好的控制内存的使用,提高服务器的性能,降低负载。TCMalloc的实现原理和测试报告请见一篇文章:《TCMalloc:线程缓存的Malloc》

一、安装Tcmalloc

因为测试环境都是为Linux 64位操作系统,so需要先安装libunwind库,而对于32位操作系统来说是不需要的。libunwindku库在64位的操作系统为为程序提供基本的堆栈辗转开解功能,其中包括:用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API、支持C++异常处理的API。

①、安装libunwind

# wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz 下载URL,可以进入这个URL下载最新的libunwind库

# tar xzvf libunwind-1.1.tar.gz

# CFLAGS=-fPIC ./configure

# make CFLAGS=-fPIC

# make CFLAGS=-fPIC install

注意:这里是使用默认配置安装的,默认路径为/usr/local,so libunwind库应该是安装在/usr/local/lib目录下

②、安装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目录下

安装完成之后,建议TCmaloc库加载到Linux系统中,具体操作如下:# echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf

# /sbin/ldconfig

通过上面的几个步骤,就已经将Tcmalloc给安装完成了。那么接下来就是怎么使用Tcmalloc来优化Mysql啦。

二、使用tcmalloc优化Mysql

使用tcmalloc优化Mysql可以通过两种方法来实现,分别为:动态加载、静态编译

①、动态加载

动态加载比较方便,不需要重新安装mysql,只需要修改在mysqld_safe添加一条语句然后重启就行。具体操作如下:# vim mysqld_safe

···

export LD_PRELOAD="/usr/local/lib/libtcmalloc.so"

···

注意:这里必须在LD_PRELOAD前面加上export,否则不生效。

重启之后我们可以通过如下命令来查看,mysql是否已经使用Tcmalloc来进行内存处理。

# lsof |grep -i libtcmalloc.so

mysqld 13961 mysql mem REG 253,0 1948990 196421 /usr/local/lib/libtcmalloc.so.4.1.2

②、静态编译

这个方法需要重新安装mysql数据库,具体的编译参数如下:cmake -DCMAKE_INSTALL_PREFIX=/app/soft/mysql5.5.29 \

-DMYSQL_UNIX_ADDR=/data/mysqldata/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_DATADIR=/data/mysqldata \

-DCMAKE_EXE_LINKER_FLAGS="-ltcmalloc" \

-DMYSQL_TCP_PORT=3306

编译完成,成功启动之后,检测是否使用tcmalloc的方法和动态加载一样。

ok,以上就将mysql使用TCmalloc进行内存处理的安装配置了,如有问题请指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值