`
lz1130
  • 浏览: 406282 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

使用TCMalloc优化mysql

阅读更多
论坛的数据库…………
不说也罢,直接切入正题。

论坛数据库机器很老
CPU:Intel Pentium III Xeon 700 2MB CPU
MEM:1G

之前有调整过my.cnf的配置,跑了许久,还算稳定。因为不是我装的,configure的参数不知道有没有优化,但是内存小我觉得是比较致命的缺点,而且挂的数据库比较多,并发一高,内存更是严重不足。想了很多缓解压力的办法,前段时间在张晏大大的blog里发现篇博客,了解到TCMalloc可以提高mysql在高并发下的性能。又在网上搜索了许多资料,觉得可行,而且很符合我们的实际情况。

什么是TCMalloc?

    TCMalloc意思是线程缓存的malloc。

    TCMalloc(Thread-Caching Malloc)是google开发的开源工具──“google-perftools”中的成员。与标准的glibc库的malloc相比,TCMalloc在内存的分配上效率和速度要高得多,可以在很大程度上提高服务器在高并发情况下的性能,降低系统负载。

别人翻译的TCMalloc介绍:http://shiningray.cn/tcmalloc-thread-caching-malloc.html

于是乎,今天又做了优化,在此简略记录一下数据,以便日后对比。
开机14天
| Key_read_requests                 | 2088601666 |
| Key_reads                         | 1685046    |
Key_read_requests/Key_reads=1240
1240个请求只有1个从硬盘读取,其他命中缓存。之前有开机时间长的一次看的数据是2000。

TCMalloc安装

编译MYSQL时,configure时不能有这一个参数 with-mysqld-ldflags=-all-static,否则加载失败。

64位操作系统请先安装libunwind库,32位操作系统不要安装。libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API。
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
sudo make CFLAGS=-fPIC install


安装google-perftools
./configure
make
sudo make install


设置并更新动态连接库
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr-local-lib.conf
ldconfig


配置mysql启动脚本
sudo vi /usr/local/web/mysql/bin/mysqld_safe
#在:# executing mysqld_safe下加入以下
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so


重启mysql后查看是否加载成功
lsof -n | grep tcmalloc
#mysqld    11046 mysql  mem       REG       72,1    1808415    4693827 /usr/local/lib/libtcmalloc.so.0.0.0


补充
这里有个别人测试的结果:http://www.javayou.com/diary/18368


有人测试成功32位系统静态编译TCMalloc到Mysql,方法是:

要执行的预编译指令
CFLAGS="-O3"
CXX=g++
CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti"

在configure时要加入的参数
--with-mysqld-ldflags=-all-static
--with-mysqld-ldflags=-ltcmalloc
#网上都写成了--with-mysqld-ldflags="-all-static -ltcmalloc",结果make错误,分开写没问题
--enable-thread-safe-client
#有人说必须要

这个我没试过,静态编译虽然效率更高,但是感觉兼容性、稳定性会有问题。

2009.10.11
分享到:
评论
3 楼 mathgl 2009-10-15  
Mysql的 conn 部分好像还是 thread pool 模型。 这部份的性能提高应该比较明显。
2 楼 lz1130 2009-10-13  
ray_linn 写道
有点问题...缓存缓解内存压力? 一般来说缓存缓解的是I/O压力。。。


不太明白你说的。TCMalloc的作用是提高内存分配上的效率和速度。
内存分配快,回收快,程序执行的自然快,在高并发下更为明显。
目前我也还在测试。一切以事实说话,几周后做个对比看看。
1 楼 ray_linn 2009-10-13  
有点问题...缓存缓解内存压力? 一般来说缓存缓解的是I/O压力。。。

相关推荐

    基于C++的TCMalloc内存优化模块设计源码

    本项目为基于C++语言的TCMalloc内存优化模块的设计...TCMalloc(google-perftools)旨在优化多线程C++应用的内存分配,相比glibc 2.3的malloc具有更高的性能,特别适用于MySQL等数据库在高并发环境下的内存稳定性需求。

    MySQL大神的服务器内核以及系统相关优化手册

    * 内存分配算法优化:选择合适的内存分配算法,如 jemalloc、tcmalloc 等。 系统资源分配 在 MySQL 服务器中,系统资源的分配是至关重要的。我们可以从多方面入手: * 内存资源分配:推荐将内存占用率控制在 15-...

    MySQL5.5-deps

    在安装MySQL 5.5之前,你需要先解压MySQL5.5-deps,然后使用RPM命令逐个安装这些依赖。例如,你可以使用`rpm -ivh`命令来安装每个rpm包。安装完成后,你可以继续安装MySQL 5.5的主程序,并进行必要的配置,如设置...

    libunwind-1.1.tar.gz

    例如,如果发现某个查询在MySQL中消耗了大量内存,libunwind可以帮助确定是哪个函数调用导致了这个问题,而tcmalloc则可以提供内存分配的详细统计,帮助找出内存使用效率低下的原因。 在实际部署中,MySQL和Nginx...

    linux centos 编译安装Mysql.zip

    在Linux CentOS系统上编译安装MySQL是一个相对复杂的过程,但能提供高度的定制性和优化空间。MySQL是一款流行的开源关系型数据库管理系统,广泛应用于各种规模的企业和项目中。本指南将详细阐述如何在CentOS上从源...

    MySQL主从复制配置文档

    - 配置编译选项,`./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-tcmalloc` - 编译和安装,`make && make install` - 初始化数据库,`scripts/mysql_install_db --user=mysql` - 设置权限...

    Jemalloc优化MySQL和Nginx

    对于MySQL和MariaDB,jemalloc的使用方法有两种。一种是在编译时通过`cmake`添加`-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF`参数。另一种方法是通过修改`mysqld_safe`脚本,添加`LD_PRELOAD=/...

    21条MySQL优化建议(经验总结)

    5. **内存分配算法**:使用如jemalloc或tcmalloc等优化的内存分配器,MySQL 5.5及以上版本支持设置内存分配方法。 6. **快速存储设备**:使用SSD或固态卡以提高读写速度,这对于MySQL的性能提升尤其显著。 7. **...

    如何构建高性能MySQL系统.docx

    构建高性能的MySQL系统是一项复杂而细致的工作,涉及到多个层面的优化。本文主要从硬件、操作系统、文件系统、MySQL配置和Schema设计等方面展开讨论。 首先,硬件是基础,CPU的选择和配置至关重要。为了确保最佳...

    使用google-perftools优化nginx在高并发时的性能的教程(完整版)

    在描述中提到,google-perftools不仅可以优化Nginx,还可以应用于MySQL的内存管理优化。在处理大量并发连接时,数据库性能的提升同样至关重要。通过改善内存管理,可以减少数据库查询延迟,提高吞吐量。 以下是使用...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    1.6.2 利用TCMalloc优化Nginx的性能 1.6.3 Nginx内核参数优化 1.7 实战Nginx与PHP(FastCGI)的安装、配置与优化 1.7.1 什么是 FastCGI 1.7.2 Nginx+FastCGI运行原理 1.7.3 spawn-fcgi与PHP-FPM 1.7.4 ...

    google gperftools

    gperftools是google开发的一款非常实用的工具集,主要包括:性能优异的malloc free内存分配器tcmalloc;...基于tcmalloc实现的程序CPU性能监测工具cpu-profiler.google gperftools用于优化mysql nginx等常用软件

    centos下编译安装mysql报错解决方案

    - 其他可能的特定库,如jemalloc或tcmalloc(用于内存管理优化) 在编译之前,还需要仔细阅读MySQL的官方文档,了解正确的配置选项。例如,在描述中的参数中: - `-DCMAKE_INSTALL_PREFIX=/usr/local/mysql`:指定...

    gperftools-2.7.tar.gz

    通过以上步骤,你可以在Ubuntu系统上有效地安装和使用Snort3进行网络监控,同时利用gperftools-2.7对应用程序进行性能优化。这两个工具的结合,可以帮助你更好地理解和管理系统的资源使用,提升安全性及效率。

Global site tag (gtag.js) - Google Analytics