天天看點

Tomcat性能參數設定這樣優化後,性能起飛!

作者:程式猿怪咖
Tomcat性能參數設定這樣優化後,性能起飛!

1 Tomcat簡介

Apache Tomcat是一個開源Web伺服器軟體和是基于Java Servlet容器設計的。

Tomcat官網:https://tomcat.apache.org

Tomcat性能參數設定這樣優化後,性能起飛!

也可以說Tomcat是一個web伺服器。Web伺服器是通過接收請求和提供内容來運作網站的。

市面上的Web伺服器包含:Tomcat、Apache這兩種。

2 Tomcat的優點與缺點

  • 開源。這意味着專業開發人員不斷對其進行更新和改進。
  • 輕量。它提供快速的資料處理,有助于提高您在處理複雜項目時的生産力和效率。
  • 靈活。伺服器帶有内置的自定義選項。是以可以按需設定參數配置。
  • 速度和效率相對較慢。Tomcat的速度和效率不如Apache Web伺服器,特别是靜态頁面處理。

3 Tomcat 安裝

這裡以Winds10安裝為例。

1、確定你的伺服器安裝了JVM環境(JDK)。

2、去官網 http://tomcat.apache.org :下載下傳Tomcat的zip檔案解壓到指定的目錄【注意目錄一定不要有中文】。

3、配置Tomcat環境變量

I、複制Tomcat的安裝路徑

II、此電腦 -> 屬性 -> 進階系統設定 -> 環境變量

III、系統變量 -> 建立 -> 變量名CATALINA_HOME 變量值Tomcat的安裝路徑 -> OK

Tomcat性能參數設定這樣優化後,性能起飛!

VI、系統變量 -> Path -> 編輯 -> 建立 -> 輸入%CATALINA_HOME%\bin ->OK

Tomcat性能參數設定這樣優化後,性能起飛!

4、測試是否安裝成功

Tomcat安裝路徑下的bin目錄裡找到startup.bat,輕按兩下運作。

然後打開浏覽器通路http://localhost:8080,看一下是否啟動成功。

Tomcat性能參數設定這樣優化後,性能起飛!

如果你進入到了Tomcat的這個歡迎界面,那麼恭喜你Tomcat安裝成功!

4 Tomcat性能參數設定

4.1、啟動時記憶體參數優化

1、Window下, 找到catalina.bat檔案,編輯文并在最前面加上以下參數:

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m;-Duser.timezone=GMT+08;           

2、Linux下,周到catalina.sh檔案,編輯檔案并在最前面添加以下參數:

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"           

注意:防止最前面,這裡還設定了時區。

4.2、Tomcat線程池配置

如果你的Tomcat版本在Tomcat6以下,就需要設定線程池的陪吃參數了。

1、找到 /conf/server.xml 檔案,拉到最下面增加以下配置:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />           

注意:一般伺服器設定最大線程500,最小空閑線程數20,線程最大空閑時間60秒。

2、然後找到 <Connector ...> 節點,增加executor屬性:

<Connector executor="tomcatThreadPool"
port="80"
protocol="HTTP/1.1"
maxThreads="600"
minSpareThreads="100"
maxSpareThreads="300"
connectionTimeout="60000"
keepAliveTimeout="15000"
maxKeepAliveRequests="1"
redirectPort="443"
....../>           

參數解釋:

maxThreads:最大的線程數;
minSpareThreads:最小備用線程數,該值在Tomcat啟動時的初始化;
maxSpareThreads:最大備用線程數,當建立的線程超過該值,Tomcat會自動殺死用不到的socket線程;
acceptCount:設定當所有處理請求線程被使用時,此時可以把請求放到隊列中排隊處理,其餘的請求會被拒絕。
connnectionTimeout:網絡連接配接逾時(毫秒),通常設為30000毫秒。設為0則永不逾時。
enableLookups:是否允許DNS查詢。           

注意:多個connector可以共用同一個線程池。

4.3、Tomcat連接配接Connector參數優化

<Connector executor="tomcatThreadPool"
port="80" protocol="HTTP/1.1"
connectionTimeout="60000"
keepAliveTimeout="15000"
maxKeepAliveRequests="1"
redirectPort="443"
maxHttpHeaderSize="8192" URIEncoding="UTF-8" enableLookups="false" acceptCount="100" disableUploadTimeout="true"/>           

參數解釋:

connectionTimeout: 網絡連接配接逾時(毫秒),通常可設為30000毫秒。設為0則永不逾時。
keepAliveTimeout:長連接配接最大保持時間(毫秒)。
maxKeepAliveRequests - 最大長連接配接數(1表示禁用,-1表示不限制個數,預設100個。一般設在100~200個)
maxHttpHeaderSize:http請求頭資訊的最大程度,超過該長度的部分不予處理。一般設8K
URIEncoding:指定Tomcat的URL編碼格式。
acceptCount:定當所有處理請求線程被使用時,此時可以把請求放到隊列中排隊處理,超過該值的請求不予處理,預設為10個。
disableUploadTimeout:上傳檔案時是否使用逾時機制。
enableLookups:是否反查域名(true或false)。設定為false時可提高處理能力。
bufferSize:定義要為該連接配接器建立的輸入流提供的緩沖區的大小(以位元組為機關)。預設情況下,提供2048位元組的緩沖區。
maxSpareThreads - 做多空閑連接配接數,當建立的線程數超過該值,Tomcat自動殺死不需要的socket線程,預設值為50。
maxThreads: 最多同時處理的連接配接數。即Tomcat可建立的最大的線程數。
minSpareThreads:最小空閑線程數,Tomcat初始化時建立的線程數。
minProcessors:Tomcat4時,最小空閑連接配接線程數,可提高系統處理性能,預設值為10。
maxProcessors:Tomcat4時,并發處理最大連接配接線程數,預設值為75。(用于Tomcat4中)           

4.4、Tomcat負載均衡、叢集的配置

對于負載均衡、叢集的配置,隻有Tomcat6以上支援。

找到Tomcat的server.xml,編輯該檔案添加以下參數:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/temp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>           

注意事項: 如果tomcat在同機器上,每個節點中用于監聽的TCP端口号(port)不能相同,配置範圍是4000-4100。

4.5、用JMX監控Tomcat運作狀況

如果你想用JMXj監控Tomcat運作狀況,需要手工調整啟動參數,如下:

1、Woinds下找到cataline.bat檔案,編輯并增加一行參數:

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"           

2、Linux下找到cataline.sh檔案,編輯并增加一行參數:

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=%CATALINA_BASE\conf\logging.properties"           

注意:

JDK\jre\lib\management\management.properties檔案必須有。

重新開機tomcat服務,然後用Java中的jconsole參數連接配接,就可以監控Tomcat運作情況了。

4.6、Tomcat多應用配置

找到server.xml檔案中的Host标簽中,增加一行應用參數:

<Context displayName="OA" docBase="/app/web-apps/GACWP" path="" />           

注意:path代表上下文名稱,空表示是根路徑。

繼續閱讀