GC Tuning Case學習摘要

2021-08-25 06:58:03 字數 756 閱讀 5533

case 1 場景

4cpu 2.6.18

-xmx1536m -xms1536m -xmn500m

目標減少gc次數,以避免由於gc造成難以支撐高併發量

方法:降低響應時間或請求次數,這個需要重構,比較麻煩

減少舊生代記憶體的消耗,比較靠譜

減少每次請求的記憶體消耗,貌似比較靠譜

降低gc造成的應用暫停時間

jmap dump;發現裡面的執行緒大部分在waiting狀態,沒在處理任務!

於是根據mat查到底誰在消耗記憶體,發現是由於某地方使用了threadlocal,但在使用完畢後沒

threadlocal.set(null), 做完tuning後,舊生代記憶體下降了大概200m,於是full gc頻率縮短一半,但仍然不理想

想減少每次請求所分配的記憶體,碰到問題,如何知道???嘗試只做一次請求,在run之前之後,進而對比,但實際上dump的時候會force gc,找不到最終的引用關係。。。只好review all code, e.g,  substring會產生新物件,新方法是遍歷char array來避免產生新物件

降低gc所造成的長暫停: 採用cms gc, qps只提公升到50.。。於是放棄,而且還有和jmap -heap的衝突

前端和qps定量,後端用tps定量

終極必殺技:降低系統響應時間,qps終於能支撐到90, 把響應時間從100ms低到40ms左右

預估系統qps峰值,提前報警,避免系統crash

認真分析gc log

case 2

「假學習「 」真學習「? 摘

什麼叫做 假學習 一 看書 買一堆書,有空看看。看書,這是典型的假學習。看書看不懂還在看,就是假學習,欺騙自己,安慰自己正在學習而已。專業書都寫得很好,但大都是寫給已經懂的人看的。看書的最大作用就是證明自己看書是學不到東西的,然後只有尋找其他途徑。建議 把書合上,想一想,你想學的東西東西到底是要幹什...

摘 學習網路程式設計方法

網路這東西就是乙個靠實踐的東西,只靠看書是不行的。當年在學校還上過史美林教授 張公忠教授所講的計算機網路體系結構課,用的是 tanabaum寫的那本,考試還得了九十多分,可實際還是連tcp和udp有什麼區別都分不清,就是死記硬背,到畢業的時候基本上是忘光了。工作後等於重新來過。上班了要在linux做...

大道至簡 瀏覽摘摘

一 程式設計的精義 程式 演算法 結構 程式的實現 順序 分支 迴圈 二 是懶人造就了方法 程式 演算法 結構 方法 過程 oop 三 團隊缺乏的不只是管理 做管理的起碼需要能承擔責任,這是最基本的素質 專案成功的評估 完成質量 完成時間 只能靠經驗來評估了 真廢話 難以評估?那麼很多專案一開始就是...