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 三 團隊缺乏的不只是管理 做管理的起碼需要能承擔責任,這是最基本的素質 專案成功的評估 完成質量 完成時間 只能靠經驗來評估了 真廢話 難以評估?那麼很多專案一開始就是...