天天看點

安裝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,如需轉載請自行聯系原作者