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