內容轉載自:java
http://mp.weixin.qq.com/s?__biz=MjM5NzMyMjAwMA==&mid=2651478294&idx=3&sn=8d72cb9fd39c204ab086cd152f4d90e5&chksm=bd2535698a52bc7f08a24774d854c4bc2da8480fe01f9c7f6b72510dd64b5f837fd99717ea80&mpshare=1&scene=23&srcid=0315lUalUtvkLoSecAog5kwh#rdtomcat
一、JDK內存優化服務器
根據服務器物理內容狀況配置相關參數優化tomcat性能。當應用程序須要的內存超出堆的最大值時虛擬機就會提示內存溢出,而且致使應用服務崩潰。所以通常建議堆的最大值設置爲可用內存的最大值的80%。 Tomcat默承認以使用的內存爲128MB,在較大型的應用項目中,這點內存是不夠的,須要調大。網絡
Tomcat默承認以使用的內存爲128MB,併發
Windows下,在文件/bin/catalina.bat,jvm
Unix下,在文件/bin/catalina.sh的前面,socket
增長以下設置:性能
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
二、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"/>