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

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

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

    內蒙古java團隊

    j2se,j2ee開發組
    posts - 139, comments - 212, trackbacks - 0, articles - 65
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    JVM調優的幾種策略[轉]

    Posted on 2012-08-29 21:07 帥子 閱讀(878) 評論(0)  編輯  收藏
    JVM參數調優是一個很頭痛的問題,可能和應用有關系,別人說可以的對自己不一定管用。下面是本人一些JVM調優的實踐經驗,希望對讀者能有幫助,環境LinuxAS4,resin2.1.17,JDK6.0,2CPU,4G內存,dell2950服務器。
       
        JVM調優
       
        一:JVM調優之串行垃圾回收
       
        也就是默認配置,完成10萬request用時153秒。JVM參數配置如下:
       
        $JAVA_ARGS.=“-Dresin.home=$SERVER_ROOT-server
       
        -Xms2048M-Xmx2048M-Xmn512M
       
        -XX:PermSize=256M-XX:MaxPermSize=256M
       
        -XX:MaxTenuringThreshold=7-XX:GCTimeRatio=19
       
        -Xnoclassgc-Xloggc:log/gc.log
       
        -XX:+PrintGCDetails-XX:+PrintGCTimeStamps”;
       
        這種配置一般在resin啟動24小時內似乎沒有大問題,網站可以正常訪問,但查看日志發現,在接近24小時時,FullGC執行越來越頻繁,大約每隔3分鐘就有一次FullGC,每次FullGC系統會停頓6秒左右,作為一個網站來說,用戶等待6秒恐怕太長了,所以這種方式有待改善。MaxTenuringThreshold=7表示一個對象如果在救助空間移動7次還沒有被回收就放入年老代,GCTimeRatio=19表示java可以用5%的時間來做垃圾回收,1/(1+19)=1/20=5%.
       
        二:JVM調優之并行回收
       
        完成10萬request用時117秒,配置如下:
       
        $JAVA_ARGS.=“-Dresin.home=$SERVER_ROOT-server-Xmx2048M
       
        -Xms2048M-Xmn512M-XX:PermSize=256M-XX:MaxPermSize=256M
       
        -Xnoclassgc-Xloggc:log/gc.log-XX:+PrintGCDetails
       
        -XX:+PrintGCTimeStamps-XX:+UseParallelGC-XX:ParallelGCThreads=20
       
        -XX:+UseParallelOldGC-XX:MaxGCPauseMillis=500
       
        -XX:+UseAdaptiveSizePolicy-XX:MaxTenuringThreshold=7
       
        -XX:GCTimeRatio=19”;
       
        并行回收我嘗試過多種組合配置,似乎都沒什么用,resin啟動3小時左右就會停頓,時間超過10秒。也有可能是參數設置不夠好的原因,MaxGCPauseMillis表示GC最大停頓時間,在resin剛啟動還沒有執行FullGC時系統是正常的,但一旦執行FullGC,MaxGCPauseMillis根本沒有用,停頓時間可能超過20秒,之后會發生什么我也不再關心了,趕緊重啟resin,嘗試其他回收策略。
       
        三:JVM調優之并發回收
       
        完成10萬request用時60秒,比并行回收差不多快一倍,是默認回收策略性能的2.5倍,配置如下:
       
        $JAVA_ARGS.=“-Dresin.home=$SERVER_ROOT-server
       
        -Xms2048M-Xmx2048M-Xmn512M-XX:PermSize=256M
       
        -XX:MaxPermSize=256M-XX:+UseConcMarkSweepGC
       
        -XX:MaxTenuringThreshold=7-XX:GCTimeRatio=19
       
        -Xnoclassgc-Xloggc:log/gc.log-XX:+PrintGCDetails
       
        -XX:+PrintGCTimeStamps-XX:+UseCMSCompactAtFullCollection
       
        -XX:CMSFullGCsBeforeCompaction=0”;
       
        這個配置雖然不會出現10秒連不上的情況,但系統重啟3個小時左右,每隔幾分鐘就會有5秒連不上的情況,查看gc.log,發現在執行ParNewGC時有個promotionfailed錯誤,從而轉向執行FullGC,造成系統停頓,而且會很頻繁,每隔幾分鐘就有一次,所以還得改善。UseCMSCompactAtFullCollection是表是執行FullGC后對內存進行整理壓縮,免得產生內存碎片,CMSFullGCsBeforeCompaction=N表示執行N次FullGC后執行內存壓縮。
       
        四:JVM調優之增量回收
       
        完成10萬request用時171秒,太慢了,配置如下:
       
        $JAVA_ARGS.=“-Dresin.home=$SERVER_ROOT-server
       
        -Xms2048M-Xmx2048M-Xmn512M-XX:PermSize=256M
       
        -XX:MaxPermSize=256M-XX:MaxTenuringThreshold=7
       
        -XX:GCTimeRatio=19-Xnoclassgc-Xloggc:log/gc.log
       
        -XX:+PrintGCDetails-XX:+PrintGCTimeStamps-Xincgc”;
       
        似乎回收得也不太干凈,而且也對性能有較大影響,不值得試。
       
        五:JVM調優之并發回收的I-CMS模式
       
        和增量回收差不多,完成10萬request用時170秒。配置如下:
       
        $JAVA_ARGS.=“-Dresin.home=$SERVER_ROOT-server
       
        -Xms2048M-Xmx2048M-Xmn512M-XX:PermSize=256M
       
        -XX:MaxPermSize=256M-XX:MaxTenuringThreshold=7
       
        -XX:GCTimeRatio=19-Xnoclassgc-Xloggc:log/gc.log
       
        -XX:+PrintGCDetails-XX:+PrintGCTimeStamps
       
        -XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode
       
        -XX:+CMSIncrementalPacing
       
        -XX:CMSIncrementalDutyCycleMin=0
       
        -XX:CMSIncrementalDutyCycle=10-XX:-TraceClassUnloading”;
       
        采用了sun推薦的參數,回收效果不好,照樣有停頓,數小時之內就會頻繁出現停頓,什么sun推薦的參數,照樣不好使。
       
        六:JVM調優之遞增式低暫停收集器
       
        又叫什么火車式回收,完成10萬request用時153秒,配置如下:
       
        $JAVA_ARGS.=“-Dresin.home=$SERVER_ROOT-server
       
        -Xms2048M-Xmx2048M-Xmn512M-XX:PermSize=256M
       
        -XX:MaxPermSize=256M-XX:MaxTenuringThreshold=7
       
        -XX:GCTimeRatio=19-Xnoclassgc-Xloggc:log/gc.log
       
        -XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+UseTrainGC”;
       
        該配置效果也不好,影響性能,所以沒試。
       
        七:相比之下,還是并發回收比較好,性能比較高,只要能解決ParNewGC(并行回收年輕代)時的promotionfailed錯誤就一切好辦了,查了很多文章,發現引起promotionfailed錯誤的原因是CMS來不及回收(CMS默認在年老代占到90%左右才會執行),年老代又沒有足夠的空間供GC把一些活的對象從年輕代移到年老代,所以執行FullGC.CMSInitiatingOccupancyFraction=70表示年老代占到約70%時就開始執行CMS,這樣就不會出現FullGC了。SoftRefLRUPolicyMSPerMB這個參數也是我認為比較有用的,官方解釋是softlyreachableobjectswillremainaliveforsomeamountoftimeafterthelasttimetheywerereferenced.Thedefaultvalueisonesecondoflifetimeperfreemegabyteintheheap,我覺得沒必要等1秒,所以設置成0.配置如下
       
        $JAVA_ARGS.=“-Dresin.home=$SERVER_ROOT-server-Xms2048M
       
        -Xmx2048M-Xmn512M-XX:PermSize=256M-XX:MaxPermSize=256M
       
        -XX:SurvivorRatio=8-XX:MaxTenuringThreshold=7
       
        -XX:GCTimeRatio=19-Xnoclassgc-XX:+DisableExplicitGC
       
        -XX:+UseParNewGC-XX:+UseConcMarkSweepGC
       
        -XX:+CMSPermGenSweepingEnabled
       
        -XX:+UseCMSCompactAtFullCollection
       
        -XX:CMSFullGCsBeforeCompaction=0
       
        -XX:+CMSClassUnloadingEnabled-XX:-CMSParallelRemarkEnabled
       
        -XX:CMSInitiatingOccupancyFraction=70
       
        -XX:SoftRefLRUPolicyMSPerMB=0-XX:+PrintClassHistogram
       
        -XX:+PrintGCDetails-XX:+PrintGCTimeStamps
       
        -XX:+PrintGCApplicationConcurrentTime
       
        -XX:+PrintGCApplicationStoppedTime
       
        -Xloggc:log/gc.log”;
       
        上面這個配置內存上升的很慢,24小時之內幾乎沒有停頓現象,最長的只停滯了0.8s,ParNewGC每30秒左右才執行一次,每次回收約0.2秒,看來問題應該暫時解決了。

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲免费视频观看| 亚洲AV无码乱码国产麻豆| 精品亚洲成在人线AV无码| 91大神免费观看| 亚洲日本在线免费观看| 精品福利一区二区三区免费视频| 亚洲AV成人无码久久精品老人| 毛片在线播放免费观看| 亚洲AV日韩AV鸥美在线观看| 无码免费一区二区三区免费播放| 亚洲欧洲免费视频| 亚洲黄色片免费看| 亚洲娇小性xxxx| 日本19禁啪啪无遮挡免费动图| 一级片在线免费看| 亚洲精品国产成人99久久| 无码国产精品一区二区免费 | 亚洲日本va在线视频观看| 久久免费线看线看| 亚洲AV无码久久久久网站蜜桃| 毛色毛片免费观看| 欧洲乱码伦视频免费国产| 国产亚洲人成网站观看| 99re视频精品全部免费| 亚洲av无码一区二区三区人妖| xvideos亚洲永久网址| 免费国产成人午夜在线观看| 亚洲区视频在线观看| 免费jlzzjlzz在线播放视频| a毛片免费全部播放完整成| 91亚洲性爱在线视频| 免费人成年激情视频在线观看| 三级毛片在线免费观看| 亚洲一级大黄大色毛片| 午夜亚洲av永久无码精品| 无码人妻丰满熟妇区免费| 亚洲欧美在线x视频| 国产成A人亚洲精V品无码| 成人毛片免费网站| 免费播放在线日本感人片| 亚洲人成网男女大片在线播放|