国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JVM優(yōu)化過(guò)程全記錄

HelKyle / 498人閱讀

摘要:修改完這個(gè),重新上線后,跑了一段時(shí)間查看情況可以看到比之前好一些了但是的次數(shù)還是比較多,照這情況下去一天的估計(jì)會(huì)有這當(dāng)然是不可接受的前面說(shuō)的另一個(gè)人次,飛神說(shuō)如果是跑了半年的話還可以接受。

今天看JVM群里有人發(fā)了一個(gè)GC情況,讓人幫忙看優(yōu)化的,于是我也湊熱鬧發(fā)了出來(lái)想讓群里的大神們指導(dǎo)優(yōu)化一下,以下是優(yōu)化過(guò)程記錄.

一開始我貼了下面的兩張圖

jstat看GC記錄
jstat -gcutil pid 1000 20

jcmd看VM參數(shù)(第一次使用這個(gè)命令)
jcmd pid VM.flags

可以看到Y(jié)GC了8W多次,F(xiàn)GC有1100+,相比較另一個(gè)發(fā)出來(lái)求教的,我這個(gè)更糟糕,他的是運(yùn)行了3天左右 FGC370次

然后飛神讓我看下運(yùn)行時(shí)間
ps -p pid -o etime

我的也是跑了3天左右,感覺優(yōu)化空間非常的大

又讓我拉了JVM配置
jinfo -flags pid(沒權(quán)限,沒執(zhí)行成功)
ps aux | grep pid

發(fā)現(xiàn)我的JVM完全沒做過(guò)優(yōu)化,據(jù)我自己的印象,就改過(guò)PermSize,因?yàn)檫@個(gè)OOM過(guò),所以調(diào)大了一點(diǎn)。

然后飛神給了我一份他之前用過(guò)的配置
JAVA_OPTS="-Xms2g?-Xmx2g?-Xmn512m?-XX:MaxPermSize=256m??-server?-Xss256k?-XX:PermSize=128M?-XX:+PrintGCDetails?-XX:+PrintGCDateStamps?-Xloggc:/data/log/gclog/gc.log?-XX:+HeapDumpOnOutOfMemoryError?-XX:HeapDumpPath=/data/log/jvmdump/jvm.bin?-XX:+UseConcMarkSweepGC?-XX:+UseParNewGC??-XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly?-XX:+UseCMSCompactAtFullCollection?-XX:CMSFullGCsBeforeCompaction=0?-XX:+CMSClassUnloadingEnabled?-XX:+TieredCompilation??-XX:+PrintTenuringDistribution?-XX:+PrintGCApplicationStoppedTime?-XX:+PrintHeapAtGC

并囑咐了一句loggc和dumpPath提前mkdir

因?yàn)橐呀?jīng)是周五晚上了,我沒有權(quán)限直接修改這個(gè)配置,所以準(zhǔn)備下周一再配上去看效果。

萬(wàn)萬(wàn)沒想到,回家路上,笨神出來(lái)說(shuō)話了,要我看下存活實(shí)例

jmap -histo:live pid

由于沒有開啟GC日志,于是笨神讓我開著jstat(飛神提到jstat -gccause pid可以跟蹤gc情況),然后在另一個(gè)窗口執(zhí)行jmap -histo:live

剛開始沒明白,后來(lái)才知道原來(lái)這個(gè)命令可以觸發(fā)Full GC

可以看到執(zhí)行了Full GC以后Old區(qū)從90%降到了79%,F(xiàn)GC效果很差,說(shuō)明活對(duì)象太多了。

回過(guò)頭去看jmap實(shí)例,發(fā)現(xiàn)AtomicInteger這個(gè)類對(duì)象特別的多,竟然有300多萬(wàn)個(gè)實(shí)例,已經(jīng)是top2了。

翻看代碼沒有發(fā)現(xiàn)有使用這個(gè)類的地方,初步懷疑是依賴的jar包使用的,笨神建議dump用MAT分析一下。

dump命令導(dǎo)出文件
jmap -dump:format=b,file=pid.dump pid

檢查了一下項(xiàng)目代碼后,發(fā)現(xiàn)了問(wèn)題,項(xiàng)目代碼就不貼了

項(xiàng)目中有一個(gè)統(tǒng)計(jì)API調(diào)用次數(shù)的類使用了AtomicInteger,在這個(gè)類里針對(duì)每個(gè)用戶都會(huì)生成大概六七十個(gè)AtomicInteger實(shí)例,每次上報(bào)過(guò)數(shù)據(jù)之后只是簡(jiǎn)單的把值設(shè)置為0,導(dǎo)致負(fù)責(zé)統(tǒng)計(jì)的實(shí)例一直持有這些AtomicInteger,而且隨著新用戶的不斷增加,這些實(shí)例數(shù)量還會(huì)持續(xù)增長(zhǎng),最終會(huì)導(dǎo)致內(nèi)存溢出。

修改完這個(gè)BUG,重新上線后,跑了一段時(shí)間查看gc情況

可以看到比之前好一些了 但是FGC的次數(shù)還是比較多,照這情況下去一天的FGC估計(jì)會(huì)有200+,這當(dāng)然是不可接受的(前面說(shuō)的另一個(gè)人370次FGC,飛神說(shuō)如果是跑了半年的話還可以接受)。

看了飛神推薦的阿里畢玄大師的文章為什么不建議

于是準(zhǔn)備先不上CMS GC,就簡(jiǎn)單的把Xms,Xmn和GC日志配置了一下

-Xms2048m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=128m -Xss256k -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data/project/delivery_v9/code/logs/gc.log -XX:GCLogFileSize=50m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/project/delivery_v9/tomcat/jvmdump/jvm.dump

運(yùn)行了一天左右看下對(duì)比結(jié)果

未配置

已配置

可以看到配置完以后對(duì)GC影響還是挺大的(不管是YGC還是FGC),當(dāng)然這也是必然的,畢竟沒有配置的機(jī)器初始內(nèi)存比較小,在不斷擴(kuò)容的過(guò)程中會(huì)頻繁的GC,而且這個(gè)時(shí)候其實(shí)沒配置的那臺(tái)機(jī)器內(nèi)存還沒有擴(kuò)充到上限,在資源充足的情況下,這種動(dòng)態(tài)擴(kuò)容顯然是完全沒有必要的。

配置完的機(jī)器雖然GC時(shí)間和次數(shù)已經(jīng)降了很多了,但是還是沒達(dá)到期望的結(jié)果,考慮到這個(gè)程序短時(shí)間的活對(duì)象是比較多的,可以通過(guò)調(diào)整年輕代和老年代的內(nèi)存占比來(lái)減少因?yàn)槟贻p代內(nèi)存不足導(dǎo)致晉升到老年代的對(duì)象。

現(xiàn)在已經(jīng)離開這個(gè)項(xiàng)目了,所以后面就沒有再繼續(xù)優(yōu)化了,以后再有這方面的實(shí)踐重新寫文章記錄。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/67552.html

相關(guān)文章

  • 我的2016年Java書單

    摘要:相對(duì)于電子書,我更喜歡紙質(zhì)版的書籍。過(guò)去的年一共閱讀過(guò)本技術(shù)書,下面對(duì)這些書做一個(gè)小結(jié)。源碼深度解析這本書是年購(gòu)買的,年是第四次閱讀。必知必會(huì)數(shù)據(jù)庫(kù)的復(fù)習(xí)書籍,內(nèi)容淺顯易懂。 相對(duì)于電子書,我更喜歡紙質(zhì)版的書籍。我喜歡在拿到新書時(shí)記錄購(gòu)買時(shí)間、地點(diǎn)、開始閱讀的時(shí)間、第一次看完的時(shí)間,算是一種學(xué)習(xí)的記錄。過(guò)去的2016年一共閱讀過(guò)15本技術(shù)書,下面對(duì)這些書做一個(gè)小結(jié)。 《深入理解Java...

    Scholer 評(píng)論0 收藏0
  • UPYUN Open Talk :同盾,從零打造千萬(wàn)級(jí)實(shí)時(shí)風(fēng)控云服務(wù)

    摘要:同盾技術(shù)總監(jiān)張新波在第二期移動(dòng)時(shí)代互聯(lián)網(wǎng)金融的架構(gòu)趨勢(shì)中闡述了同盾是如何從零開始打造千萬(wàn)級(jí)實(shí)時(shí)風(fēng)控云服務(wù),具體介紹了同盾系統(tǒng)平臺(tái)構(gòu)建過(guò)程中主要需要解決的三大難題,以及解決這些問(wèn)題的具體時(shí)實(shí)踐過(guò)程。 同盾科技,是由阿里、Paypal 反欺詐專家創(chuàng)建的,國(guó)內(nèi)第一家風(fēng)險(xiǎn)控制與反欺詐云服務(wù)提供商,其涉及領(lǐng)域包括電商、B2B、互聯(lián)網(wǎng)金融、游戲等。同盾技術(shù)總監(jiān)張新波在 UPYUN Open ...

    malakashi 評(píng)論0 收藏0
  • 逐夢(mèng)offer -- JVM

    摘要:的字節(jié)碼解釋器和編譯器使用寫屏障維護(hù)卡表。解釋器每次執(zhí)行更新引用的字節(jié)碼時(shí),都會(huì)執(zhí)行一段寫屏障,編譯器在生成更新引用的代碼后,也會(huì)生成一段寫屏障。 4. JVM 4.1 GC 1. 垃圾收集 基礎(chǔ) : 可達(dá)性分析算法 GC ROOTS 復(fù)制算法 標(biāo)記清除 標(biāo)記整理 分代收集 -- 1. 新生代 ; 2.3 老年代注: Oop Map -- 安全點(diǎn) -- 安全區(qū) 以下部分內(nèi)容 來(lái)自 ...

    greatwhole 評(píng)論0 收藏0
  • 【效率專精系列】幾種常見的JVM熱部署技術(shù)及實(shí)現(xiàn)難點(diǎn)淺談

    摘要:而熱部署技術(shù)能夠幫助開發(fā)人員減少重新部署的等待時(shí)間。本文的目的為調(diào)研熱部署的技術(shù)現(xiàn)狀及其對(duì)開發(fā)效率的幫助,并簡(jiǎn)單梳理其技術(shù)實(shí)現(xiàn)的難點(diǎn)。熱部署技術(shù)總結(jié)熱部署目前有多種技術(shù)實(shí)現(xiàn)官方開源商業(yè)。 開發(fā)、自測(cè)、聯(lián)調(diào)期間代碼可能會(huì)被頻繁地修改,通常即使只增加了一行代碼,都需要重啟容器以檢查執(zhí)行效果。而熱部署技術(shù)能夠幫助開發(fā)人員減少重新部署的等待時(shí)間。本文的目的為調(diào)研熱部署的技術(shù)現(xiàn)狀及其對(duì)開發(fā)效率的...

    dongfangyiyu 評(píng)論0 收藏0
  • 面試官問(wèn)我JVM調(diào)優(yōu),我忍不住了!

    面試官:今天要不來(lái)聊聊JVM調(diào)優(yōu)相關(guān)的吧?面試官:你曾經(jīng)在生產(chǎn)環(huán)境下有過(guò)調(diào)優(yōu)JVM的經(jīng)歷嗎?候選者:沒有面試官:...候選者:嗯...是這樣的,我們一般優(yōu)化系統(tǒng)的思路是這樣的候選者:1. 一般來(lái)說(shuō)關(guān)系型數(shù)據(jù)庫(kù)是先到瓶頸,首先排查是否為數(shù)據(jù)庫(kù)的問(wèn)題候選者:(這個(gè)過(guò)程中就需要評(píng)估自己建的索引是否合理、是否需要引入分布式緩存、是否需要分庫(kù)分表等等)候選者:2. 然后,我們會(huì)考慮是否需要擴(kuò)容(橫向和縱向都...

    不知名網(wǎng)友 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<