Tomcat服務器優化
由於Tomcat的運行依賴於JVM,從虛擬機的角度我們把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。
推薦將最小堆大小和最大堆大小設置為同一值,因為這樣可以避免浪費用於時常調整堆大小所需的VM資源。
虛擬機可通過命令行的方式改變虛擬機使用內存的大小。
-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端口即可
效果如下:
Tomcat服務器優化