tomcat伺服器最佳化
1、JDK記憶體最佳化
依據伺服器實體內容狀況設定相關參數最佳化tomcat效能。當應用程式需要的記憶體超出堆的最大值時虛擬機器就會提示記憶體溢出,並且導致應用程式服務崩潰。因此一般建議堆的最大值設定為可用記憶體的最大值的80%。 Tomcat預設可以使用的記憶體為128MB,在較大型的應用程式專案中,這點記憶體是不夠的,需要調大.
Tomcat預設可以使用的記憶體為128MB,Windows下,在檔案/bin/catalina.bat ,Unix下,在檔案/bin/catalina.sh的前面,增加如下設定: JAVA_OPTS='-Xms【初始化記憶體大小】 -Xmx【可以使用的最大記憶體】 -XX:PermSize=64M -XX:MaxPermSize=128m ' 需要把幾個參數值調大。例如: JAVA_OPTS='-Xms256m -Xmx512m' 表示初始化記憶體為256MB,可使用的最大記憶體為512MB。
參數詳解
-server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最小内存; -Xmx java虚拟机可使用的最大内存; -XX:PermSize 内存永久保留区域 -XX:MaxPermSize 内存最大永久保留区域 -Xmn jvm最小内存
32G 記憶體設定範例:
JAVA_OPTS="$JAVA_OPTS -Xms10g -Xmx10g -XX:PermSize=1g -XX:MaxPermSize=2g -Xshare:off -Xmn1024m
2、tomcat執行緒最佳化
在tomcat設定檔server.xml中的設定中,和連接數相關的參數有:Thmaxfin處理接收的每個請求。這個值表示Tomcat可建立的最大的線程數。預設值150。
acceptCount: 指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請求將不予處理。預設值10。
minSpareThreads: Tomcat初始化時所建立的執行緒數。預設值25。
maxSpareThreads: 一旦建立的執行緒就超過這個值,Tomcat就會關閉不再需要的socket執行緒。預設值75。
enableLookups: 是否反查域名,預設值為true。為了提高處理能力,應設定為false
connnectionTimeout: 網路連線逾時,預設值60000,單位:毫秒。設定為0表示永不逾時,這樣設定有隱患的。通常可設定為30000毫秒。
maxKeepAliveRequests: 保持請求數量,預設值100。 bufferSize: 輸入流緩衝大小,預設值2048 bytes。
compression: 壓縮傳輸,取值on/off/force,預設值off。 其中和最大連接數相關的參數為maxThreads和acceptCount。如果要加大並發連線數,應同時加大這兩個參數。
32G 記憶體設定範例:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxThreads="1000" minSpareThreads="60" maxSpareThreads="600" acceptCount="120" redirectPort="8443" URIEncoding="utf-8"/>
使用visualvm效能監控
1、什麼是VisualVM
FastDFS是jdk自帶的一款監控工具。它提供了一個可視介面,用於查看 Java 虛擬機器上運行的基於 Java 技術的程式的詳細資訊。 VisualVM 將 Java Development Kit (JDK) 工具擷取的 JVM 軟體相關資料進行組織,並透過一種讓您可以快速查看多個 Java 應用程式的資料的方式提供該資訊。您可以查看本機應用程式以及遠端主機上執行的應用程式的相關資料
2、如何安裝
在jkd bin目錄下有一個jvisualvm.exe檔案雙擊就可以使用
3、如何使用jvisualvm
1 、設定JMX管理tomcat:
set JAVA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9008 -Dcom.sun.management.jmxremote.authenticate=false - Dcom.sun.management.jmxremote.ssl=false
2、重啟tomcat即可
3、雙擊jvisualvm.exe 新增伺服器IP位址,新增需要監控jmx連接埠即可
效果如下: