<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    CMS gc實踐調整(續2)

    Posted on 2009-09-26 18:29 dennis 閱讀(2100) 評論(1)  編輯  收藏 所屬分類: java
        本以為在上篇定稿的參數后應該能有比較好的表現,然后實際的表現大出我的意料,cms回收觸發非常頻繁,雖然每次都只是10-50毫秒,但是次數12個小時內能達到180多次,這顯然不正常。通過gc日志和jstat可以看到,每次old區還在5%左右就開始進行CMS,此時的perm區也才30%,這兩個數字有浮動并且CMS觸發的時間上也沒有規律,在測試環境和生產環境中都是如此。

        那么最后是怎么解決的呢?其實沒有解決。我只是替換了一個參數就沒再發生這個現象,上文提到為了避免System.gc()調用引起的full gc,使用了jdk6引入的新參數-XX:+ExplicitGCInvokesConcurrent來讓System.gc()并發執行,但是測試表明恰恰是這個參數引起了CMS的頻繁發生,去掉這個參數就沒有那個奇特的現象。重復檢查了代碼,并且再次查看了GC日志,沒有再發現有System.gc()的調用,我暫時將原因歸結于使用了ExplicitGCInvokesConcurrent參數后其他方法觸發了CMS,如果有知曉的朋友請留言告知,最后的方案還是徹底禁掉了顯式GC調用。最終定稿的參數:

    -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m
    -XX:PermSize=64m -XX:MaxPermSize=64m -XX:+UseConcMarkSweepGC
    -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70
    -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0
    -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC
    -XX:SurvivorRatio=8

        刪除了+CMSPermGenSweepingEnabled,這個參數在jdk6上跟
    -XX:+CMSClassUnloadingEnabled作用重疊了,如果你還跑在jdk5上面,那么應該使用這個參數。救助空間設置為NewSize的1/10,也就是25M左右,讓年輕代盡量回收,防止年輕對象跑到年老代過早觸發CMS甚至full gc。CMS的觸發閥值下降到70%,因為年老代增長較慢,寧愿回收次數多一點,降低長暫停的可能。

        24小時內的某臺生產機器的表現,通過jstat觀察:
      S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
     
    39.70   0.00   5.59  15.15  28.99  20260  326.041    14    0.592  326.633
     
    39.70   0.00  65.49  15.15  28.99  20260  326.041    14    0.592  326.633
      
    0.00  36.93  19.37  15.16  29.01  20261  326.059    14    0.592  326.650
      
    0.00  36.93  93.23  15.16  29.01  20261  326.059    14    0.592  326.650
     
    34.04   0.00  59.62  15.17  29.01  20262  326.076    14    0.592  326.668
      
    0.00  38.55  12.76  15.19  29.01  20263  326.094    14    0.592  326.686
      
    0.00  38.55  65.48  15.19  29.01  20263  326.094    14    0.592  326.686

        CMS兩次暫停時間總和在100ms以下,minor gc平均一次執行花了16ms,平均3-4秒發生一次。暫時來看還不錯,也許還可以適當調小一下NewSize,加快以下minor gc。

        此次調整總共花了大概一周多的時間,由于經驗不足,還是走了不少彎路,幸好最終的結果還可以,也讓自己對cms gc有比較深入的了解。我們的系統在周4晚上已經全部更新上線,從內部測試、壓測、日常測試、beta測試以來,每個階段都發現幾個隱蔽的問題,在上線后暫時沒有再發現問題,證明這個流程還是很有意義的,我過去對流程充滿偏見,現在看來是可笑的。總結我在淘寶5個月越來學習到的東西,幾個關鍵詞:認真、負責、細心、快樂。


    評論

    # re: CMS gc實踐調整(續2)[未登錄]  回復  更多評論   

    2012-10-22 18:11 by gg
    -XX:CMSInitiatingOccupancyFraction=70% 這個配置應配合-XX:+UseCMSInitiatingOccupancyOnly使用,單獨使用-XX:+UseCMSInitiatingOccupancyOnly這個參數配置HotSpot VM只是利用這個值來啟動第一次CMS垃圾回收,以后的垃圾回收都是使用HotSpot VM自動計算出來的值。
    主站蜘蛛池模板: 亚洲一级片内射网站在线观看| 95免费观看体验区视频| 亚洲三级在线免费观看| 国产精品久久久亚洲| 三上悠亚电影全集免费| 亚洲精品tv久久久久| 日本精品久久久久久久久免费| 国产精品无码素人福利免费| 亚洲av色香蕉一区二区三区| 好爽又高潮了毛片免费下载| 亚洲欧美黑人猛交群| 国产男女猛烈无遮档免费视频网站 | 无码国产精品一区二区免费| 亚洲第一成年网站大全亚洲| 91精品免费国产高清在线| 亚洲伊人色一综合网| 成人毛片视频免费网站观看| 女bbbbxxxx另类亚洲| 亚洲一本大道无码av天堂| a级成人免费毛片完整版| 亚洲第一精品在线视频| 久九九精品免费视频| 亚洲av乱码中文一区二区三区| 国产成人免费a在线视频app | 亚洲午夜国产精品无码| 久久精品乱子伦免费| 亚洲国产成人手机在线电影bd | 日韩亚洲精品福利| 成人性做爰aaa片免费看| 亚洲国产高清在线精品一区| 免费的一级片网站| 免费无码又爽又刺激网站| 久久精品亚洲精品国产色婷 | 一个人免费观看www视频| 亚洲一区无码中文字幕| 亚洲精品在线免费观看视频| 色欲色欲天天天www亚洲伊| 亚洲日本va在线视频观看| ww4545四虎永久免费地址| 久久精品国产亚洲AV未满十八| 亚洲人成电影网站国产精品|