设为首页 收藏本站
查看: 800|回复: 2

[经验分享] Tcmalloc优化Mysql内存

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-9-12 08:49:29 | 显示全部楼层 |阅读模式
实验环境:
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 ... ibunwind-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进行内存处理的安装配置了,如有问题请指正。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-9190-1-1.html 上篇帖子: linux mysql乱码问题 下篇帖子: Mysql架构分析与工作流程

尚未签到

发表于 2013-11-15 08:33:00 | 显示全部楼层
不知该说些什么。。。。。。就是谢谢

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2014-1-1 13:32:37 | 显示全部楼层
曾经的相濡以沫,现在的行同陌路。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表