環境配置:
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裡面的推薦公式來進行參考設置:
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性能調優詳細教程,看完記得轉發、點贊和收藏。想了解更多內容,請關注本小編,如果有錯誤,歡迎批評指正,感謝支持。
(雲渺書齋)