使用GooglePerformanceTools--tcmalloc提高MySQL服务器性能

一个朋友的网站,原来遇到 mysql 性能不足,产生 swap 颠簸问题,后来使用 tcmalloc 解决了。观察了一个多星期,效果不错。
下面转载是他的文章。
之前,一直困恼很久的 MySQL 的问题因为有了 tcmalloc 后得以解决。

问题是:网站访问量不高,高峰时并发数在 300-400 之间。 CPU 比较高,在 30-80% 之间波动得厉害,使用 top 命令可以看到是 mysql 进程导致,同时用 iostat sar 查看 iowait 值很高在 20-30 之间。

但是系统还可以稳定运行,然后周期性的出现 swap 分区占用率攀升,直接导致应用程序无法连接数据库。不知道这是不是 mysql swap 颠簸的问题。没解决办法的时候只好经常监控内存的使用情况,碰到 swap 开始攀升的时候重启 MySQL 服务。一般这个周期在一个星期左右。

后来在网上搜到了 tcmalloc ,说是这个东西可以让 MySQL 在高并发下性能也很稳定,同时也说了 MySQL 这个问题是因为 malloc 内存分配函数的 bug ,这个 bug 会使高并发的 MySQL 性能急剧下降。

决定试试。

系统是 64 位的 RedHat Enterprise Linux 5.0 。在 64 位系统下需要安装另外一个包 libunwind 。然后下载 tcmalloc 包,按默认方式编译和安装成功后在 mysqld_safe 中加入

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

重启 MySQL 。没有办法可以验证 tcmalloc 是否起效,只能再继续监控系统的运行状况。

经过一个多礼拜了,你可以看看下面一个抓自 mrtg 的图:





上面两个图中,第一个是 CPU 的图,第二个是内存的图。可以看出从换上 tcmalloc 后, CPU 占用率下降非常明显,原来一直维持在 30% 左右,现在只占不到 10% 。而内存方面,原来物理内存一直占用 100% swap 占用率波动得很厉害,下降点一般是重启 MySQL 后导致的,而换上 tcmalloc 后,内存维持在 80-90% 之间,而 swap 占用率就非常稳定,可以按零计。

而且已经持续了一个多礼拜了。可以说效果相当相当的明显,非常令人满意。再也不用老去盯着 mrtg 看了。当然这是我的机器上现实的情况,不知道其他系统怎样。

libunwind: http://www.nongnu.org/libunwind/
tcmalloc: http://goog-perftools.sourceforge.net/doc/tcmalloc.html

详细的安装步骤

#tar zxvf libunwind-0.98.6.tar.gz
#cd libunwind-0.98.6
#./configure
#make
#make install

#tar zxvf google-perftools-0.94.1.tar.gz
#cd google*
#./configure
#make
#make install

打开 mysqld_safe 脚本 ( 默认在 /usr/bin/mysqld_safe)
在此脚本文件开始加入
LD_PRELOAD="/usr/local/lib/libtcmalloc.so"

#service mysql restart
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值