linux伺服器並發與tcmalloc

來源:互聯網
上載者:User

標籤:blog   http   使用   ar   資料   2014   問題   log   sp   

  前一天使用pmap查看伺服器中自己開發的遊戲服務的記憶體使用量情況,發現其中資料存放區服務的記憶體佔用率非常高,如下。

  

  從中可以看出來,分配了大量的64MB左右的記憶體空間,因為對自己的服務比較瞭解,知道不可能是自己程式開闢的,而且進程才剛剛啟動,也不可能是記憶體泄露。

  所以第一時間想到的是我的服務是多線程並發的,而且開闢的不知名的記憶體塊的數量和線程數也比較吻合,將線程數減少,發現記憶體也就跟著減少,基本可以肯定是線程導致的。

  但是線程為什麼會導致這麼多記憶體塊的使用,google一下,有一篇文章寫得和我的情況非常類似。http://chou.it/tag/pmap/

  可能是glibc的線程記憶體配置的問題,建議使用tcmalloc。

 

  於是從網上下載了gperftools-2.1-28.2.x86_64.rpm,和libunwind-1.1-94.3.x86_64.rpm, unwind是gperftools依賴的一個庫,所以需要一起下。

  gperftools是google開發的一套開源工具,其中包含tcmalloc。

 

  然後在程式連結的時候,將tcmalloc加入進去之後,我使用的是cmake方式編譯,就是添加一行TARGET_LINK_LIBRARIES(xxx tcmalloc),如果用makefile就是-ltcmalloc即可

  重新編譯,然後運行程式之後,重新使用pmap查看記憶體使用量情況,發現記憶體使用量迴歸到合理的狀態。

  

linux伺服器並發與tcmalloc

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.