版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
官方JRockitJVM調(diào)優(yōu)文檔轉(zhuǎn)自BEA,原文鏈接已經(jīng)無(wú)法訪問(wèn),文中的許多鏈接也更改過(guò)地址,我把能找到的都重新做了連接。以前一直以為Jrockit和Sun的JVM配置差不多,看了這篇文章和最后參考資料中的信息,發(fā)現(xiàn)區(qū)別不是一點(diǎn)點(diǎn),很多常用參數(shù)的使用都不一樣。Jrockit的自動(dòng)化設(shè)置應(yīng)該說(shuō)做的不錯(cuò),在WebLogic上我很少更改它的默認(rèn)配置(除了堆最大最小值),不過(guò)不影響這篇文章存在的價(jià)值。摘要本文的目的是以清單的方式提供BEAJRockitJVM的調(diào)優(yōu)信息。從深?yuàn)W的命令行選項(xiàng)到迭代性能測(cè)試,本文涵蓋了許多方面。大部分?jǐn)?shù)據(jù)都是我與用戶合作過(guò)程中收集的。您要是也有什么技巧的話,請(qǐng)告訴我,在本文的下一版中,我會(huì)嘗試將它們添加進(jìn)去。具體的產(chǎn)品版本信息都已在適當(dāng)?shù)牡胤搅谐?;但是,本文所提供的通用指南適用于JRockit的大多數(shù)版本。每個(gè)版本的JRockit都增加了新的設(shè)置和優(yōu)化,所以請(qǐng)查看\o"Jrockit發(fā)行說(shuō)明"發(fā)行說(shuō)明和\o"JRockit產(chǎn)品中心"JRockit產(chǎn)品中心。驗(yàn)證當(dāng)前的JRockit環(huán)境首先需要確定您的運(yùn)行時(shí)應(yīng)用程序服務(wù)器所使用的JRockit的版本。為此,可以查看相應(yīng)應(yīng)用程序服務(wù)器的日志文件。也可以使用適當(dāng)?shù)哪_本設(shè)置系統(tǒng)環(huán)境,然后執(zhí)行java–version命令來(lái)確定JRockit的版本。接著,收集當(dāng)前JVM標(biāo)志,開(kāi)發(fā)和/或生產(chǎn)階段需要用到它們:-server-Xms1024m-Xmx1536m-Xverboselog:gc.log-Xverbose:memory-Xgcprio:throughput這將告訴您當(dāng)前JRockit實(shí)例的配置情況。確定應(yīng)用程序的目標(biāo)確定應(yīng)用程序的目標(biāo)是什么。是“響應(yīng)快”還是“性能高”?根據(jù)目標(biāo)的不同,需要設(shè)置不同的垃圾收集算法。例如,如果應(yīng)用程序的目標(biāo)是實(shí)現(xiàn)高性能,則確保設(shè)置了DynamicGarbageCollector"-Xgcprio:throughput"選項(xiàng)。如果目標(biāo)是響應(yīng)時(shí)間短,那么需要將-Xgcprio:pausetime-Xpausetarget=XXX’中的pausetarget設(shè)置為最佳值。有關(guān)更多細(xì)節(jié),請(qǐng)查看JRockit調(diào)優(yōu)文檔。收集故障診斷數(shù)據(jù)如果JVM性能有問(wèn)題,那么最好是先收集一些分析數(shù)據(jù)。該工作可以由團(tuán)隊(duì)中有相關(guān)經(jīng)驗(yàn)的人員來(lái)完成,您也可以將這些信息發(fā)送給BEASupport做進(jìn)一步分析。首先,出現(xiàn)問(wèn)題時(shí)需要收集大約10分鐘的運(yùn)行時(shí)JRockitRecording(JRA)數(shù)據(jù)。可以使用jrcmd.sh實(shí)用工具或\o"JRMC"JRockitMissionControl(JRMC)完成此操作。請(qǐng)閱讀“性能測(cè)試期間的JRCMD/JRA”和“JRockitMissionControl”兩節(jié)的內(nèi)容。有關(guān)詳細(xì)信息,請(qǐng)參閱JRockitMissionControl文檔。LatencyAnalysis一節(jié)提供許多有價(jià)值的內(nèi)容,我們可以從中了解任何潛在的延遲問(wèn)題(在JRockit中需要一個(gè)許可證就可以使用它)。然后,需要收集問(wèn)題發(fā)生時(shí)的一些詳細(xì)日志。方法是在啟動(dòng)服務(wù)器實(shí)例的時(shí)候在JVM命令行輸入以下參數(shù):-Xverboselog:perTestGC.log-Xverbose:opt,memory,gcpause,memdbg,compaction,gc,license-Xverbosetimestamp-Xgcreport這樣會(huì)將有價(jià)值的分析數(shù)據(jù)收集到剛才配置的perTestGC.log文件中。團(tuán)隊(duì)成員和/或BEASupport可以對(duì)這些數(shù)據(jù)進(jìn)行分析。最后一點(diǎn):通常,應(yīng)用程序不會(huì)請(qǐng)求執(zhí)行垃圾收集(也就是在應(yīng)用程序代碼中調(diào)用System.gc())。但如果您懷疑它有問(wèn)題,那么可以在啟動(dòng)服務(wù)器實(shí)例的時(shí)候,在Java命令行使用-XXnoSystemGC參數(shù)來(lái)禁用它。現(xiàn)在,我將介紹如何通過(guò)迭代性能測(cè)試方法解決這些問(wèn)題。迭代性能測(cè)試方案及其方法完成初始數(shù)據(jù)的收集和分析后,我們可以通過(guò)迭代方法來(lái)調(diào)優(yōu)JVM。此處介紹的測(cè)試方案是在JRockitJVM層執(zhí)行迭代調(diào)優(yōu)的通用方法,可以找到哪些設(shè)置可能有益于特定應(yīng)用程序。假定您有測(cè)量性能結(jié)果的方法;然后,可以將它們與“基準(zhǔn)”(您應(yīng)該已經(jīng)有了)進(jìn)行比較。測(cè)試1:線程本地區(qū)域大小和大對(duì)象大小在本測(cè)試中,我們將查看線程本地區(qū)域大小。這很重要,因?yàn)槿绻@些標(biāo)志的默認(rèn)設(shè)置對(duì)于應(yīng)用程序不是最佳的(多數(shù)情況下是這樣),那么就會(huì)造成堆鎖定,這將對(duì)性能產(chǎn)生影響。將大部分對(duì)象限制在一定范圍內(nèi)對(duì)整體性能有益。分析收集的JRARecording數(shù)據(jù)分析結(jié)果,查看-XXtlasize和-XXlargeobjectlimit是否需要調(diào)優(yōu)(請(qǐng)記住,對(duì)于多數(shù)應(yīng)用程序,根據(jù)eDocs,線程本地區(qū)域大小應(yīng)該至少是大對(duì)象大小的兩倍)。這些內(nèi)c.測(cè)試4-3:根據(jù)前面的-XXsetGC:genparpar測(cè)試向上或向下調(diào)優(yōu)nursery大小。d.測(cè)試4-4:用-Xgc:gencon-Xns50m(和設(shè)為收集規(guī)格的日志)試試。e.測(cè)試4-5:用-Xgc:parallel-XXcompactratio:1(和設(shè)為收集規(guī)格的日志)試試。測(cè)試5:調(diào)優(yōu)垃圾收集線程本測(cè)試的目的是查看gcthreads標(biāo)志設(shè)置對(duì)整體性能的影響。根據(jù)前面的結(jié)果,調(diào)優(yōu)-XXgcthreads標(biāo)志為實(shí)際物理CPU的數(shù)量并重新運(yùn)行測(cè)試(由于這些值默認(rèn)是基于機(jī)器上核心和硬件線程的數(shù)量,所以這應(yīng)該是自動(dòng)調(diào)優(yōu)的)。您可以查看在“收集故障診斷數(shù)據(jù)”一節(jié)收集的詳細(xì)輸出日志來(lái)對(duì)其驗(yàn)證。更多細(xì)節(jié)請(qǐng)參見(jiàn)gcThreadsflag。測(cè)試6:調(diào)優(yōu)鎖爭(zhēng)用如果在胖鎖(fatlock)上存在鎖爭(zhēng)用,則可以用-XXdisableFatSpin禁止它們,或者用-Djrockit.useAdaptiveFatSpin=true讓JRockit自適應(yīng)地禁止它們。當(dāng)測(cè)試2啟用-Djrockit.lockprofiling時(shí),可以通過(guò)在JRA中查看那個(gè)標(biāo)簽來(lái)確定這一點(diǎn)。更多細(xì)節(jié),請(qǐng)參見(jiàn)lockinginJRockit。測(cè)試7:調(diào)優(yōu)Xeon硬件如果運(yùn)行在Xeon硬件之上,那么可以添加-XXallocPrefetch和-XXallocRedoPrefetch,它們與TLA和LargeObjectLimit一起將有助于減少內(nèi)存分配的開(kāi)銷。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn)allocPrefetch標(biāo)志。為了得到最佳的結(jié)果,您可能會(huì)在BIOS中禁用硬件預(yù)取指令。雖然操作方式取決于BIOS的牌子,但參數(shù)的名稱通常都為“HardwarePrefetcher”、“AdjacentSectorPrefetcher”、“AdjacentCacheLinePrefetcher”等。更多信息請(qǐng)參見(jiàn)Intelonthissubject。測(cè)試8:將堆放入largePage這會(huì)將堆鎖入內(nèi)存,使操作系統(tǒng)不能將其交換出來(lái)。更多信息請(qǐng)參見(jiàn)largePages標(biāo)志,有關(guān)Linux操作系統(tǒng)端配置的更多信息還可以參考在Linux上配置-XXlargePages一節(jié)。在JRockitR27版中,該選項(xiàng)的名稱為-XlargePages。根據(jù)前面的結(jié)果,調(diào)優(yōu)-XlargePages標(biāo)志可能有所幫助,但可能也沒(méi)有。使用該標(biāo)志運(yùn)行測(cè)試,查看結(jié)果否對(duì)整體性能有幫助。測(cè)試9:用-XXaggressive標(biāo)志測(cè)試本節(jié)中的這些配置將使JVM高速運(yùn)行并盡快達(dá)到穩(wěn)定狀態(tài)。為了實(shí)現(xiàn)此目標(biāo),JVM在啟動(dòng)時(shí)需要更多內(nèi)部資源;但當(dāng)目標(biāo)一旦達(dá)成,它所需要的自適應(yīng)優(yōu)化將更少。我們推薦您為了那些單獨(dú)工作的、運(yùn)行時(shí)間長(zhǎng)的、內(nèi)存敏感的應(yīng)用程序使用這個(gè)選項(xiàng)。更多細(xì)節(jié)請(qǐng)參見(jiàn)aggressive標(biāo)志。使用-XXaggressive標(biāo)志運(yùn)行測(cè)試,查看結(jié)果否對(duì)整體性能有幫助。測(cè)試10:用-XX:+UseNewHashFunction標(biāo)志測(cè)試這個(gè)選項(xiàng)支持一個(gè)新的、更快的HashMap散列函數(shù),它在Java5.0Update8中引入,從R27.1.0開(kāi)始也是BEAJRockit的一部分。這個(gè)散列函數(shù)能夠通過(guò)改進(jìn)的散列擴(kuò)展提高性能而不改變HashMap中元素存放的順序。更多細(xì)節(jié)請(qǐng)參見(jiàn)UseNewHashFunction標(biāo)志。使用這個(gè)新的-XX:+UseNewHashFunction運(yùn)行測(cè)試,,查看結(jié)果否對(duì)整體性能有幫助。測(cè)試11:將暗物質(zhì)減到最少“暗物質(zhì)”指被浪費(fèi)的堆內(nèi)存,它使堆成為許多碎片。了解如何最大程序地減少暗物質(zhì),以便當(dāng)堆需要壓縮時(shí),整體吞吐量不受影響。請(qǐng)看以下選項(xiàng):使用分代的垃圾收集器(-Xgc:genconor-Xgc:genpar)。在初始收集(nursery垃圾收集)期間,在nursery中被發(fā)現(xiàn)生存的對(duì)象被遷移到舊的一代。這樣有好的副作用,當(dāng)遷移對(duì)象時(shí)可以壓縮它們。提高壓縮比(-XXcompactionRatio=nn)。通過(guò)將對(duì)象遷移到壓縮塊中、消除它們之間的暗物質(zhì),壓縮減少了暗物質(zhì)。通過(guò)-XXminBlockSize:<memSize>選項(xiàng)修改規(guī)范(將什么視為暗物質(zhì)?)。堆上小于最小塊大小的塊視為暗物質(zhì)。因此,通過(guò)減小最小塊大小,您最終減少了暗物質(zhì)。但請(qǐng)注意,因?yàn)镴Rockit為了釋放堆空間必須做更細(xì)密的搜索,所以垃圾收集的時(shí)間會(huì)更長(zhǎng)。最小塊大小默認(rèn)為2KB。進(jìn)一步測(cè)試:調(diào)優(yōu)應(yīng)用程序服務(wù)器層最后,查看上述調(diào)優(yōu)建議,調(diào)優(yōu)WebLogicServer實(shí)例層。結(jié)束語(yǔ)本文提供的信息絕非一個(gè)完整的清單。但它會(huì)讓您開(kāi)始更好地理解和調(diào)優(yōu)JRockitJVM層!參考資料JRockit調(diào)優(yōu)文檔JRocikit參考文檔:XFlagsJRocikit參考文檔:XXFlags附錄以下內(nèi)容為正文引用過(guò)的額外信息。性能測(cè)試期間的JRCMD/JRA使用命令行或者基于JRockitMissionControl(JRMC)Eclipse的工具都能夠執(zhí)行JRARecoding。我們可以使用JRMC連接到多個(gè)JRockitJVM,收集JRArecording,查看JVM的實(shí)時(shí)數(shù)據(jù),檢測(cè)和排除內(nèi)存泄漏,以及查看應(yīng)用程序內(nèi)的潛伏物(執(zhí)行緩慢“點(diǎn)”)。有關(guān)如何運(yùn)行JRockitMissionControl,請(qǐng)參見(jiàn)下一節(jié)。下載文檔許可證。將下載的license.bea文件添加到<JROCKIT_HOME>/jre目錄中。這樣,完整路徑將如下所示:<JROCKIT_HOME>/jre/license.bea運(yùn)行JRCMD如下:jrcmd.sh<PID>jrarecordingfilename=myrecording.xmltime=600(該文件被寫(xiě)入本地目錄或者指定的完整路徑/文件名)或jrcmd.sh<PID>print_threads。使用脫機(jī)JRA工具分析最后得到的myrecording.xml.zip文件。通過(guò)在<JROCKIT_HOME>/bin中執(zhí)行JRAbinary,將該JRA工具放入此目錄下。請(qǐng)查看JRCMD文檔。JRockitMissionControl使用JRockit將下列內(nèi)容添加到WebLogicInstance的啟動(dòng)行中:java-Xmanagement:autodiscovery=true,ssl=false,authenticate=false,port=7091使用<jrockit-install-directory>/bin/jrmc.exe(sh)啟動(dòng)JRockitMissionControl如有必要,將JRMissionControl的license.beafile文件添加到:<JROCKIT_HOME>/jre/license.bea在MissionControl的幫助下,JRARecordings、內(nèi)存泄漏、潛伏物探查和監(jiān)控能夠全部在一處完成。堆/線程的測(cè)試期快照創(chuàng)建一個(gè)簡(jiǎn)單的、名稱ctrhandler.act的文件并將其存放在<JROCKIT_HOME>/jre/bin/jrockit目錄。執(zhí)行線程轉(zhuǎn)儲(chǔ)命令時(shí),例如,kill-3),JRockit會(huì)查看此文件并執(zhí)行命令列表。ctrlhandler.act文件應(yīng)該包含以下內(nèi)容:#ctrlhander.actfilelocatedinthe<JROCKIT_HOME>/jre/bin/jrockitdirectoryset_filenamefilename=./jrocket_control_breakoutput.txtappend=truetimestampprint_threadstimestampversionprint_class_summaryprint_object_summaryincreaseonly=trueprint_threadsprint_threadsnativestack=trueprint_utf8pooltimestampprint_memusagetimestampheap_diagnosticstimestamp#ThefollowingisoptionalandisanotherwaytogenerateaJRArecordingjrarecordingfilename=./myjra.xmltime=600在Linux上配置-XXlargePages問(wèn)題:為何使用largePages?回答:使用largePages的優(yōu)點(diǎn)是可以鎖定堆內(nèi)存,并且不適用頁(yè)面交換(還可以減少IOWait和GC)。在實(shí)際內(nèi)存中,訪問(wèn)堆中的對(duì)象明顯變快了。因此,為了實(shí)現(xiàn)性能目標(biāo),largePages選項(xiàng)是一個(gè)理想的選擇。如果機(jī)器支持大頁(yè)面,則cat/proc/meminfo的輸出將如下所示:HugePages_Total:xxxHugePages_Free:
yyyHugepagesize:
zzzKB如果xxx為0,則沒(méi)有分配任何大頁(yè)面。如果不為0,則需要使用CONFIG_HUGETLBFS(位于“Filesystems”下面)和CONFIG_HUGETLB_PAGE(當(dāng)CONFIG_HUGETLBFS被選時(shí),自動(dòng)被選上)配置選項(xiàng)構(gòu)建Linuxkernel。接著,在Linux上分配大頁(yè)。注意:只允許根用戶分配大頁(yè)面。裝載文件系統(tǒng)。JRockit使用hugepages文件系統(tǒng),它駐留在內(nèi)存中。這些步驟可以完成文件系統(tǒng)的安裝。每次機(jī)器重啟時(shí)都需要完成實(shí)際裝載和chmod命令,或者也可以將其添加到一個(gè)/etc/rc.d/rc.local類型的文件:
mkdir-p
/mnt/hugepages
mount-thugetlbfsnodev/mnt/hugepages
chmod777/mnt/hugepages分配大頁(yè)面。這是通過(guò)指定應(yīng)該分配的內(nèi)存數(shù)量來(lái)自動(dòng)執(zhí)行的。在分配過(guò)程中,這些面頁(yè)將被保留起來(lái),不能像普通頁(yè)面那樣使用。它們的分配和解除分配方式如下:echo20>/proc/sys/vm/nr_hugepages此處,數(shù)字20指應(yīng)該保留的頁(yè)面數(shù)量。要解除分配,可以將分配頁(yè)面設(shè)置為0。(注意:請(qǐng)參見(jiàn)后面Q&A部分以確定正確的數(shù)量。)如果并非所有請(qǐng)求的頁(yè)面都被保留,那么可用內(nèi)存就不夠了。如果確要如此,內(nèi)存很可能會(huì)有太多的碎片,那么我們的建議是重啟機(jī)器。請(qǐng)注意,大頁(yè)面不能被交換,所以一切都必須放在物理內(nèi)存中。在RHEL3上,該文件的名稱為/proc/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版指標(biāo)房屋銷售協(xié)議條款版
- 二手房交易中介協(xié)議合同范本(2024版)
- 2025年度銷售業(yè)務(wù)員兼職崗位員工激勵(lì)與績(jī)效改進(jìn)合同2篇
- 二零二五年度別墅景觀綠化養(yǎng)護(hù)合同3篇
- 二零二五版國(guó)際會(huì)展中心物業(yè)全面服務(wù)與管理協(xié)議3篇
- 專業(yè)廣告代理服務(wù)協(xié)議(2024版)版A版
- 2024項(xiàng)目合作中間人傭金協(xié)議書(shū)
- 二零二五年度雞苗運(yùn)輸時(shí)間優(yōu)化及效率提升合同3篇
- 二零二五版?zhèn)€人汽車銷售代理合同模板3篇
- 二零二五年度二手汽車租賃與環(huán)保節(jié)能服務(wù)合同3篇
- 農(nóng)民工工資表格
- 【寒假預(yù)習(xí)】專題04 閱讀理解 20篇 集訓(xùn)-2025年人教版(PEP)六年級(jí)英語(yǔ)下冊(cè)寒假提前學(xué)(含答案)
- 2024年突發(fā)事件新聞發(fā)布與輿論引導(dǎo)合同
- 地方政府信訪人員穩(wěn)控實(shí)施方案
- 小紅書(shū)推廣合同范例
- 商業(yè)咨詢報(bào)告范文模板
- 幼兒園籃球課培訓(xùn)
- AQ 6111-2023個(gè)體防護(hù)裝備安全管理規(guī)范知識(shí)培訓(xùn)
- 老干工作業(yè)務(wù)培訓(xùn)
- 基底節(jié)腦出血護(hù)理查房
- 高中語(yǔ)文《勸學(xué)》課件三套
評(píng)論
0/150
提交評(píng)論