<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自動計算出來的值。
    主站蜘蛛池模板: 亚洲一区二区三区播放在线| free哆啪啪免费永久| 亚洲a级在线观看| 日韩亚洲欧洲在线com91tv| 韩国二级毛片免费播放| 亚洲一区免费在线观看| 暖暖在线视频免费视频| 成人免费网站久久久| 欧美亚洲国产SUV| 亚洲综合欧美色五月俺也去| 亚洲一本综合久久| 亚洲av中文无码乱人伦在线r▽| 亚洲?V无码乱码国产精品| 午夜色a大片在线观看免费| 噼里啪啦免费观看高清动漫4| 国产精品区免费视频| 一级毛片免费全部播放| 国内成人精品亚洲日本语音 | 亚洲欧美自偷自拍另类视| 亚洲成a人片在线观看中文app| 亚洲av永久无码精品秋霞电影影院| 亚洲人成网站18禁止一区| 亚洲成aⅴ人片久青草影院| 免费一级黄色毛片| 国产三级电影免费观看| 国产小视频在线观看免费| 国产精品久免费的黄网站| 免费特级黄毛片在线成人观看| 久久不见久久见免费影院 | 亚洲福利秒拍一区二区| 亚洲精品成人av在线| 亚洲一区影音先锋色资源| 亚洲韩国在线一卡二卡| 亚洲精品国产情侣av在线| 亚洲乱码卡三乱码新区| 亚洲av无码不卡久久| 亚洲综合成人婷婷五月网址| 国产99在线|亚洲| 亚洲一本一道一区二区三区| 亚洲Av永久无码精品一区二区| 精品亚洲视频在线|