成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實例講解JVM參數調優的八條經驗

開發 后端
本文將介紹JVM參數調優,這是很頭痛的問題,設置的不好,JVM不斷執行Full GC,導致整個系統變得很慢,網站停滯時間能達10秒以上,這種情況如果沒隔幾分鐘就來一次,自己都受不了。這種停滯在測試的時候看不出來,只有網站pv達到數十萬/天的時候問題就暴露出來了。

要想配置好JVM參數,需要對年輕代、年老代、救助空間和***代有一定了解,還要了解jvm內存管理邏輯,最終還要根據自己的應用來做調整。關于JVM參數上網一搜就能搜出一大把,也有很多提供實踐的例子,我也按照各種例子測試過,最終還是會出現問題。

經過幾個月的實踐改善,我就網站(要求無停滯時間)的jvm參數調優給出以下幾條經驗。

1:建議用64位操作系統,Linux下64位的jdk比32位jdk要慢一些,但是吃得內存更多,吞吐量更大。

2:XMX和XMS設置一樣大,MaxPermSize和MinPermSize設置一樣大,這樣可以減輕伸縮堆大小帶來的壓力。

3:調試的時候設置一些打印參數,如-XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log,這樣可以從gc.log里看出一些端倪出來。

4:系統停頓的時候可能是GC的問題也可能是程序的問題,多用jmap和jstack查看,或者killall -3 java,然后查看java控制臺日志,能看出很多問題。有一次,網站突然很慢,jstack一看,原來是自己寫的URLConnection連接太多沒有釋放,改一下程序就OK了。

5:仔細了解自己的應用,如果用了緩存,那么年老代應該大一些,緩存的HashMap不應該無限制長,建議采用LRU算法的Map做緩存,LRUMap的***長度也要根據實際情況設定。

6:垃圾回收時promotion failed是個很頭痛的問題,一般可能是兩種原因產生,***個原因是救助空間不夠,救助空間里的對象還不應該被移動到年老代,但年輕代又有很多對象需要放入救助空間;第二個原因是年老代沒有足夠的空間接納來自年輕代的對象;這兩種情況都會轉向Full GC,網站停頓時間較長。***個原因我的最終解決辦法是去掉救助空間,設置-XX:SurvivorRatio=65536 -XX:MaxTenuringThreshold=0即可,第二個原因我的解決辦法是設置CMSInitiatingOccupancyFraction為某個值(假設70),這樣年老代空間到70%時就開始執行CMS,年老代有足夠的空間接納來自年輕代的對象。

7:不管怎樣,***代還是會逐漸變滿,所以隔三差五重起java服務器是必要的,我每天都自動重起。

8:采用并發回收時,年輕代小一點,年老代要大,因為年老大用的是并發回收,即使時間長點也不會影響其他程序繼續運行,網站不會停頓。

我的最終配置如下(系統8G內存),每天幾百萬pv一點問題都沒有,網站沒有停頓,2009年網站沒有因為內存問題down過機。

  1. $JAVA_ARGS .= " -Dresin.home=$SERVER_ROOT -server
  2. -Xms6000M -Xmx6000M -Xmn500M -XX:PermSize=500M -XX:MaxPermSize=500M
  3. -XX:SurvivorRatio=65536 -XX:MaxTenuringThreshold=0 -Xnoclassgc
  4. -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC
  5. -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0
  6. -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled
  7. -XX:CMSInitiatingOccupancyFraction=90 -XX:SoftRefLRUPolicyMSPerMB=0
  8. -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
  9. -XX:+PrintHeapAtGC -Xloggc:log/gc.log ";

說明一下, -XX:SurvivorRatio=65536 -XX:MaxTenuringThreshold=0就是去掉了救助空間;

-Xnoclassgc禁用類垃圾回收,性能會高一點;

-XX:+DisableExplicitGC禁止System.gc(),免得程序員誤調用gc方法影響性能;

-XX:+UseParNewGC,對年輕代采用多線程并行回收,這樣收得快;

帶CMS參數的都是和并發回收相關的,不明白的可以上網搜索;

CMSInitiatingOccupancyFraction,這個參數設置有很大技巧,基本上滿足(Xmx-Xmn)*(100-CMSInitiatingOccupancyFraction)/100>=Xmn就不會出現promotion failed。在我的應用中Xmx是6000,Xmn是500,那么Xmx-Xmn是5500兆,也就是年老代有5500兆,CMSInitiatingOccupancyFraction=90說明年老代到90%滿的時候開始執行對年老代的并發垃圾回收(CMS),這時還剩10%的空間是5500*10%=550兆,所以即使Xmn(也就是年輕代共500兆)里所有對象都搬到年老代里,550兆的空間也足夠了,所以只要滿足上面的公式,就不會出現垃圾回收時的promotion failed;

SoftRefLRUPolicyMSPerMB這個參數我認為可能有點用,官方解釋是softly reachable objects will remain alive for some amount of time after the last time they were referenced. The default value is one second of lifetime per free megabyte in the heap,我覺得沒必要等1秒;

網上其他介紹JVM參數的也比較多,估計其中大部分是沒有遇到promotion failed,或者訪問量太小沒有機會遇到,(Xmx-Xmn)*(100-CMSInitiatingOccupancyFraction)/100>=Xmn這個公式絕對是原創,真遇到promotion failed了,還得這么處理。

【編輯推薦】

  1. 安裝JDK后JRE與JVM聯系淺談
  2. 監視JSP中JVM可用內存
  3. JDK、JRE、JVM之間的關系
  4. Java之父:我們看中的并非Java語言,而是JVM
  5. Java虛擬機(JVM)中的內存設置詳解
責任編輯:彭凡 來源: 豆瓣網
相關推薦

2010-03-04 10:56:52

JVM參數

2010-09-17 17:02:24

JVM參數

2023-11-10 11:23:20

JVM內存

2010-09-26 13:48:51

JVM調優

2010-09-25 13:05:07

JVM參數

2019-03-25 20:40:51

微服務IT開發

2011-05-18 15:40:52

MySQL

2012-01-10 14:35:08

JavaJVM

2021-09-13 07:10:54

Hive查詢效率

2010-08-30 09:37:48

2017-07-21 08:55:13

TomcatJVM容器

2023-11-11 19:07:23

JVMJava

2012-06-01 11:13:58

應用推廣八條黃金法則

2011-05-06 15:34:02

打印機word

2010-09-27 09:23:42

JVM調優

2021-09-06 11:02:17

JVM架構調優

2021-03-17 11:35:11

JVM代碼Java

2022-06-02 08:28:25

Docker代碼運維

2010-09-26 13:39:46

JVM調優

2010-09-26 09:08:17

JVM調優
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线精品区 | 国产在线精品免费 | 国产中文区二幕区2012 | 欧美专区在线 | 欧美一级欧美三级在线观看 | 成人午夜精品 | 国产成都精品91一区二区三 | 玖玖国产精品视频 | 日本又色又爽又黄又高潮 | 中文字幕国产一区 | 国产精品a久久久久 | 欧美九九九 | 国产传媒视频在线观看 | 日韩免费1区二区电影 | 日韩欧美三级电影在线观看 | 日本五月婷婷 | 羞羞视频在线观看 | 精品视频久久久久久 | 国产激情偷乱视频一区二区三区 | 欧美日韩国产在线观看 | 亚洲一区二区三区 | 久久久久精 | 韩日有码 | 久久在看 | 99视频久| 国产色黄 | 久草视频观看 | 国产日韩欧美在线观看 | 日韩影院在线观看 | 国产精品久久一区 | av黄色在线 | 国产福利视频 | 午夜成人免费视频 | 成人特级毛片 | 51ⅴ精品国产91久久久久久 | 欧美亚洲国产一区二区三区 | 日韩中文一区二区三区 | 欧美最猛黑人xxxx黑人 | 精品国产乱码久久久久久蜜柚 | 国产分类视频 | 老外几下就让我高潮了 |