程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JVM Tomcat機能實戰(推舉)

JVM Tomcat機能實戰(推舉)

編輯:關於JAVA

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機能實戰(推舉)就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved