首页 > 数据库

使用tcmalloc后的MySQL服务器变稳定了

时间:2009-04-24 13:26:43  作者:冯鑫  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
之前,一直困恼很久的MySQL的问题因为有了tcmalloc后得以解决。问题是:网站访问量不高,高峰时并发数在300-400之间。CPU比较高,在30-80%之间波动得厉害,使用top命令......

之前,一直困恼很久的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

如果您需转载 使用tcmalloc后的MySQL服务器变稳定了,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门