天天看点

安装tcmalloc内存控制模块,并配置mysql使用

这个tcmalloc很出名了,是google出的内存管理模块,比传统模块控制更合理,能应付更高的并发,而且也更稳定.

不过这个模块不是系统自带的,没有原生安装,所以需要手动去安装操作,稍微有点麻烦.这个模块包含在google封装的工具集google-perftools里面.

安装

先安装相关运行库,因为是用c++写的,需要make,还有一个运行环境libunwind

<code>yum -y </code><code>install</code> <code>gcc </code><code>make</code> <code>gcc-c++ libunwind</code>

然后下载并安装google-perftools

<code>#下载源码包</code>

<code>wget https:</code><code>//github</code><code>.com</code><code>/gperftools/gperftools/releases/download/gperftools-2</code><code>.5</code><code>/gperftools-2</code><code>.5.</code><code>tar</code><code>.gz</code>

<code>#解压源码包</code>

<code>tar</code> <code>xf gperftools-2.5.</code><code>tar</code><code>.gz</code>

<code>#开始编译安装</code>

<code>.</code><code>/confighre</code>

<code>make</code>

<code>make</code> <code>install</code>

<code>#搜索一下,找到安装好的相关C库文件</code>

<code>find</code> <code>/ -name libtcmalloc.so</code>

<code>/usr/local/lib/libtcmalloc</code><code>.so</code>

<code>/opt/gperftools-2</code><code>.5/.libs</code><code>/libtcmalloc</code><code>.so</code>

<code>#创建lib库软连接,这样就不需要用ldconfig了</code>

<code>ln</code> <code>-sf </code><code>/usr/local/lib/</code><code>* </code><code>/usr/lib/</code>

<code>#完成</code>

<code>ll </code><code>/usr/lib/libtcmalloc</code><code>.so</code>

<code>lrwxrwxrwx. 1 root root 29 Jan 23 12:05 </code><code>/usr/lib/libtcmalloc</code><code>.so -&gt; </code><code>/usr/local/lib/libtcmalloc</code><code>.so</code>

安装完成,就等程序调用了,懂开发的可以测试一下,我这里直接用mysql调用.

===============================================

因为这个软件略难找,这个链接也不知道什么时候失效,我上传到51cto下载了

http://down.51cto.com/data/2437899

配置mysql使用

使用mysql调用这个模块,有两种方法,一种就是加载到mysqld_safe启动,另一种就是加载的配置文件.不过,都要重启mysql程序才能生效,其他程序亦然.

没有项目加载的话,下面这条命令是没有返回的

<code>lsof</code> <code>-n | </code><code>grep</code> <code>tcmalloc</code>

然后,加到mysql的配置文件my.cnf

<code>#打开mysql配置文件,添加下面两行</code>

<code>vim </code><code>/usr/local/mysql/my</code><code>.cnf</code>

<code>    </code><code>.</code>

<code>[mysqld_safe]</code>

<code>malloc-lib=tcmalloc</code>

<code>#重启mysql</code>

<code>/etc/init</code><code>.d</code><code>/mysql</code> <code>restart</code>

注意:如果是正常安装并加载libtcmalloc.so的话,是不会报错的,重启将直接生效.如果有报错,则需要研究一下哪里做错了,或者尝试重新安装.

现在来看看使用上没有

<code>mysqld     3665         mysql  mem       REG              253,0    1050408  100663894 </code><code>/usr/local/lib/libtcmalloc_minimal</code><code>.so.4.3.0</code>

<code>mysqld     3665  3666   mysql  mem       REG              253,0    1050408  100663894 </code><code>/usr/local/lib/libtcmalloc_minimal</code><code>.so.4.3.0</code>

<code>mysqld     3665  3669   mysql  mem       REG              253,0    1050408  100663894 </code><code>/usr/local/lib/libtcmalloc_minimal</code><code>.so.4.3.0</code>

可以明确看到,mysql已经加载上这个模块了,那就可以用了

     本文转自arthur376 51CTO博客,原文链接:http://blog.51cto.com/arthur376/2064226,如需转载请自行联系原作者