JVM Tomcat機能實戰(推舉)。本站提示廣大學習愛好者:(JVM Tomcat機能實戰(推舉))文章只能為提供參考,不一定能成為您想要的結果。以下是JVM Tomcat機能實戰(推舉)正文
本節只是引見實戰部門,詳細的實際參數,請自行百度。
所需對象:linux辦事器 Jmeter測試對象 xshell 一個web運用
Tomcat的JVM參數可以設置裝備擺設在catalina.sh,假如是在window上可以設置裝備擺設.bat文件
設置裝備擺設1:
這裡 我設置裝備擺設了一個gc日記途徑為/home/log/gc.log ,打印gc的日記,初始堆和最年夜堆內存設置為50M,輸入Dump文件在內存溢出的時刻 ,應用串行渣滓搜集器,永遠代年夜小為50m。
將web運用放到對應的目次,設置裝備擺設好server.xml(這裡不作設置裝備擺設引見),sh start.sh啟動tomcat.
應用壓測對象(Jmeter)停止吞吐量的測試。沒用過的同窗可以上官網下載進修一下http://jmeter.apache.org/
樹立用戶組(10個線程,每一個線程要求1000次),設置好Http要求的信息,生成一個聚合申報和一個gc日記
先來看一下gc日記吧:
滿屏幕的Full GC啊,最初檢查聚合申報:
吞吐量保持在122.7每秒。從這個案例中我們可以看到老年月34176k根本曾經滿了,經由FUllGC以後重生代會有一點殘剩的空間。總的來講Full GC的停留時光是最長的,並且產生的這麼頻仍,明顯如許的設置裝備擺設是不公道的。
設置裝備擺設2:
此次設置裝備擺設重要是增年夜了最年夜堆內存。以便虛擬機主動擴容,獲得穩固的堆內存年夜小。
只須要存眷一點 最年夜堆內存為82924k 80M閣下,也就是說虛擬機對堆內存主動擴容到80M,而且穩固上去。這個設置裝備擺設測試只是為了找到一個穩固的堆內存,以便接上去的測試。
設置裝備擺設三:
設置堆的初始內存128m。
由設置裝備擺設2的成果可知,堆內存終究穩固在80m閣下,是以小於80m的堆內存,很有能夠會惹起年夜量的GC反響,所以這裡我把堆內存設置為128M,可以削減GC次數。
可以看到吞吐量稍微有所晉升,GC次數年夜量削減,而且GC的時光距離變得更長。
設置裝備擺設四:
以後應用ParallalGC收受接管器,這是一個多線程並行收受接管器。
應用多線程並行的GC收受接管器吞吐量有稍微有晉升。(在沒有GC壓力的情形下,ParallalGC和serialGC對吞吐量影響不年夜。)
設置裝備擺設五:
設置裝備擺設六:
依據設置裝備擺設三的結論在80M以下的堆內存會產生頻仍的GC,再聯合設置裝備擺設四中獲得的結論在有必定GC壓力的時刻,ParallelGC和serialGC的吞吐量會表示出必定的差別性。設置裝備擺設五和設置裝備擺設六的堆內存64M<80M ,會產生頻仍的GC,采取分歧的GC收受接管器的時刻,實際上會在在吞吐量上有較年夜的差別性,然則我的試驗為何差距不是很年夜,究竟為何呢? 诶, 家裡窮,我用的是單核的CPU,在單核的情形下ParallelGC轉變機能其實不顯著。在單核或許並行才能較弱的情形下照樣推舉應用serialGC。有前提的同窗可以用多核的辦事器試一下哦!
設置裝備擺設七:
用ParNewGC嘗嘗,重生代應用ParNewGC收受接管,老年月照舊應用SerialGC收受接管。看看機能若何?
比全體應用串行收受接管器的機能好,然則比全體應用並行收受接管器的機能差些。
別的JDK版本的進級能夠也會使得機能有一點的晉升,然則JDK版本進級隨同著必定的風險,或許在新版本的JDK中引入某些未知的BUG.
最初我列出一些經常使用的JVM設置裝備擺設參數供參考:
1. 與串行收受接管期相干的參數
•-XX:+UseSerialGC:在重生代和老年月應用串行的搜集器
•-XX:SurvivorRatio:設置eden區的年夜小和survivor區的比例
•-XX:PretenureSizeThreshold:設置年夜對象直接進入老年月的閥值。當對象的年夜小跨越這個值,將直接在老年月分派
•-XX:MaxTenuringThreshold:設置對象進入老年月的年紀的最年夜值。每次Minor GC後,對象年紀就加1.任何年夜於這個年紀的對象,必定會進入老年月。
2. 與並行GC相干的參數
•-XX:+UseParNewGC:在重生代應用並行搜集器。
•-XX:+UseParallelOldGC:在老年月應用並行搜集器
•-XX:+ParallelGCThreads:設置用於渣滓收受接管的線程數,平日可以設置成和CPU數相等。CPU數目較多的情形下,設置絕對小的數值也可。
•-XX:+MaxGCPauseMillis:設置最年夜渣滓搜集停留時光。它的值是一個年夜於0的整數。搜集器在任務時,會調劑java堆的年夜小或其他的一些參數,盡量把停留時光掌握在MaxGCPauseMillis之內。
•-XX:+UseAdaptiveSizePolicy:翻開自順應GC戰略,在這類形式下,重生代的年夜小和survivior的比例,提升老年月的對象年紀等參數會被主動的調劑,以到達堆年夜小,吞吐量和停留之間的均衡點。
•-XX:+GCTimeRatio:設置吞吐量年夜小。它的值是一個0到100之間的證書。假定GCTimeRatio的值為n,那末體系將消費不跨越1/(1+n)的時光用於渣滓搜集。
3. 與CMS搜集器相干的參數
•-XX:+UseConcMarkSweepGC:重生代應用並行搜集器,老年月應用CMS+串行搜集器。
•-XX:ParallelCMSThreads:設置CMS的線程數目。
•-XX:CMSInitiatingOccupancyFraction:設置CMS搜集器在老年月空間被應用若干後觸發,默許68%
•-XX:UseCMSCompactAtFullCollection:設置CMS在完成渣滓搜集後能否要停止一次碎片整頓
•-XX:CMSFullGCBeforeCompaction:設定停止若干次CMS渣滓收受接管後,停止一次內存緊縮。
•-XX:+CMSClassUnloadingEnabled:許可對類元數據停止收受接管
•-XX:CMSInitiatingPermOccupancyFraction:當永遠代占領率到達這一百分比時,啟動CMS收受接管(條件是-XX:+CMSClassUnloadingEnabled被激活了)
•-XX:UseCMSInitiatingOccupancyOnly:表現只要在達到閥值的時刻才停止CMS收受接管。
•-XX:+CMSIncrementalMode:應用增量形式,比擬合適單CPU.增量形式在中標志為放棄,jdk9中將完全移除
4. 與G1收受接管期相干的參數
•-XX:+UseG1GC:應用G1收受接管器
•-XX:+MaxGCPauseMillis:設置最年夜的渣滓搜集停留時光
•-XX:+GcPauseIntervalMillis:設置停留時光距離。
5. TLAB相干
•-XX:+UseTLAB:開啟TLAB分派。
•-XX:+PrintTLAB:打印TLAB相干分派信息
•-XX:TLABSize:設置TLAB年夜小
•-XX:+ResizeTLAB:主動調劑TLAB年夜小
6. 其他一些參數
•-XX:+DisableExplicitGC:禁用顯式GC
•-XX:+ExplicitGCInvokesConcurrent:應用並發方法處置顯式GC
以上這篇JVM Tomcat機能實戰(推舉)就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。