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中的配置中,和連線數相關的引數有:
maxThreads: Tomcat使用執行緒來處理接收的每個請求。這個值表示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
visualvm是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埠即可
效果如下: