【Linux】Tomcat8.0.52性能調優詳細教程

環境配置:

JVM Version: 1.8.0_221-b11

Server version: Apache Tomcat/8.0.52

OS Name: Linux

OS Version: 3.10.0-327.el7.x86_64

Linux虛擬機配置:32G內存 4核CPU


Tomcat性能調優主要涉及兩個方面:JVM優化和自身參數優化。

JVM優化

Tomcat運行在JVM上,調整JVM參數,可以使Tomcat擁有更好的性能。主要調整兩個方面:內存和垃圾回收策略。

內存調優:找到Tomcat根目錄下的bin目錄,設置catalina.sh文件中的JAVA_OPTS變量,如下:

<code>

export

JAVA_OPTS=

"-Xmx2048m -Xms2048m -Xss2014K -XX:PermSize=128m -XX:MaxPermSize=512m -XX:MaxNewSize=256m"

/<code>

-Xmx2048m:Java虛擬機的堆最大可用內存大小,單位:兆(m)。

-Xms2048m:Java虛擬機的堆初始值內存大小,單位:兆(m),此值可以設置與-Xmx相同,以避免每次垃圾回收完成後JVM重新分配內存。

-Xmn700m :年輕代內存大小,單位:兆(m),佔整個堆的3/8左右。

-Xss2014K:每個線程的棧大小,單位:k。

-XX:PermSize:非堆區初始內存分配大小,單位:兆(m)。

-XX:MaxPermSize:非堆區分配的內存的最大上限,單位:兆(m)。

-XX:MaxNewSize:新生代初始內存的大小,應該小於 -Xms的值,單位:兆(m)。

根據Java Performance裡面的推薦公式來進行參考設置:

【Linux】Tomcat8.0.52性能調優詳細教程

圖1 JVM內存設置推薦公式

Java heap:Xms和Xmx設置為老年代存活對象的3-4倍。

Permanent Generation:PermSize和MaxPermSize設置為老年代存活對象的1.2-1.5倍。

Young Generation:Xmn佔用率為老年代空間的1-1.5倍。

Old Generation:老年代內存大小設置為老年代存活對象的2-3倍。

PS:

1、Sun官方建議年輕代大小佔比率為整個堆的3/8左右。

2、Java heap=Young Generation+Old Generation,Permsize不影響堆大小。

垃圾回收策略調優

垃圾回收策略一般分為:串行收集器、並行收集器和併發收集器。本次調優採用並行收集器

找到Tomcat根目錄下的bin目錄,設置catalina.sh文件中的JAVA_OPTS變量,如下:

<code>

export

JAVA_OPTS=

"-Xmx2048m -Xms2048m -Xss2014K -XX:PermSize=128m -XX:MaxPermSize=512m -XX:MaxNewSize=256m -XX:+UseParallelGC -XX:ParallelGCThreads=4 -XX:+UseParallelOldGC -XX:MaxGCPauseMillis=100"

/<code>

-XX:+UseParallelGC:垃圾回收策略為並行收集器(吞吐量優先),即在整個掃描和複製過程採用多線程的方式來進行,適用於多CPU、對暫停時間要求較短的應用上,是server級別默認採用的GC方式。此配置僅對年輕代有效。該配置只能讓年輕代使用併發收集,而年老代仍舊使用串行收集。

XX:ParallelGCThreads:配置並行收集器的線程數,即:同時多少個線程一起進行垃圾回收。此值最好配置與處理器數目相等。

-XX:+UseParallelOldGC:配置老年代垃圾收集方式為並行收集。

-XX:MaxGCPauseMillis:設置每次年輕代垃圾回收的最長時間,如果無法滿足此時間,JVM會自動調整年輕代大小,以滿足此值。

-XX:+UseAdaptiveSizePolicy:JDK 1.8 默認使用 UseParallelGC 垃圾回收器,該垃圾回收器默認啟動了 AdaptiveSizePolicy。

Tomcat自身參數優化

找到Tomcat根目錄下的conf目錄,修改server.xml文件的內容。

<code>"80" maxHttpHeaderSize=

"8192"

maxThreads=

"200"

minSpareThreads=

"100"

maxSpareThreads=

"600"

enableLookups=

"false"

redirectPort=

"443"

acceptCount=

"300"

debug=

"0"

connectionTimeout=

"20000"

disableUploadTimeout=

"true"

URIEncoding=

"UTF-8"

maxKeepAliveRequests=

"1"

/>/<code>

maxHttpHeaderSize:設置Http首部長度最大值,默認值4096 字節,

maxThreads:Tomcat的最大併發數,默認配置的最大請求數是150,即同時能支持150個併發。應用擁有 250 個以上併發的時候,應考慮到應用服務器的集群。

minSpareThreads:設置當前Tomcat初始化時創建的線程數,默認值為25。

maxSpareThreads:設置Tomcat可創建的最大的線程數,每一個線程處理一個請求。

acceptCount:默認值為100,當同時連接的人數達到maxThreads參數設置的值時,還可以接收排隊的連接數量,超過這個連接的則直接返回拒絕連接。

enableLookups:是否開啟域名反查,一般設置為false來提高處理能力,它的取值還有true,一般很少使用。

URIEncoding:設置Tomcat的字符集,亂碼轉換。

maxKeepAliveRequests:maxKeepAliveRequests="1"可以避免Tomcat產生大量的TIME_WAIT連接,從而從一定程度上避免Tomcat假死。

ok,以上就是【Linux】Tomcat8.0.52性能調優詳細教程,看完記得轉發、點贊和收藏。想了解更多內容,請關注本小編,如果有錯誤,歡迎批評指正,感謝支持。

(雲渺書齋)


分享到:


相關文章: