天天看點

TOMCAT 8.5 配置優化以及JVM配置(windows server)

下載下傳官方的tomcat,我這裡用的是TOMCAT 8.5.46,然後解壓出來,解壓後的目錄如下圖

TOMCAT 8.5 配置優化以及JVM配置(windows server)

一、server.xml配置優化

進入conf目錄,打開server.xml 檔案

 1. 找到 <Executor name="tomcatThreadPool" .../>,将其修改如下

<Executor name="tomcatThreadPool" 
namePrefix="catalina-exec-" 
maxThreads="500" 
minSpareThreads="80"
maxQueueSize="100" 
maxIdleTime="60000"
prestartminSpareThreads="true" />      

maxThreads:最大并發數,預設設定 200,一般建議在 500 ~ 800,根據硬體設施和業務來判斷

minSpareThreads:Tomcat 初始化時建立的線程數,預設設定 25

maxQueueSize:最大的等待隊列數,超過則拒絕請求

maxIdleTime:如果目前線程大于初始化線程,那空閑線程存活的時間,機關毫秒,預設60000=60秒=1分鐘。

prestartminSpareThreads:在 Tomcat 初始化的時候就初始化 minSpareThreads 的參數值,如果不等于 true,minSpareThreads 的值就沒啥效果了

2.找到 <Connector port="8080" .../>,将其修改如下

<Connector executor="tomcatThreadPool" port="80" 
redirectPort="8443"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000" 
maxConnections="10000" 
enableLookups="false" 
acceptCount="100" 
maxPostSize="10485760" 
maxHttpHeaderSize="65536" 
compression="on" 
disableUploadTimeout="true" 
compressionMinSize="2048"
acceptorThreadCount="2" 
processorCache="20000" 
tcpNoDelay="true" 
connectionLinger="5" 
URIEncoding="utf-8" 
server="Server Version 11.0"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" />      

protocol :TOMCAT8以上使用org.apache.coyote.http11.Http11Nio2Protocol,效率會更高,如果啟動是出現錯誤,請使用org.apache.coyote.http11.Http11NioProtocol。有可能是改了端口8005、8009導緻。

connectionTimeout:Connector接受一個連接配接後等待的時間(milliseconds),預設值是60000。

maxConnections:這個值表示最多可以有多少個socket連接配接到tomcat上

enableLookups:禁用DNS查詢

acceptCount:當tomcat起動的線程數達到最大時,接受排隊的請求個數,預設值為100。

maxPostSize:設定由容器解析的URL參數的最大長度,-1(小于0)為禁用這個屬性,預設為2097152(2M) 請注意, FailedRequestFilter 過濾器可以用來拒絕達到了極限值的請求。

maxHttpHeaderSize:http請求頭資訊的最大程度,超過此長度的部分不予處理。一般8K。

compression:是否啟用GZIP壓縮 on為啟用(文本資料壓縮) off為不啟用, force 壓縮所有資料

disableUploadTimeout:這個标志允許servlet容器使用一個不同的,通常長在資料上傳連接配接逾時。 如果不指定,這個屬性被設定為true,表示禁用該時間逾時。

compressionMinSize:當超過最小資料大小才進行壓縮

acceptorThreadCount:用于接受連接配接的線程數量。增加這個值在多CPU的機器上,盡管你永遠不會真正需要超過2。 也有很多非維持連接配接,您可能希望增加這個值。預設值是1。

processorCache:協定處理器緩存的處理器對象來提高性能。 該設定決定多少這些對象的緩存。-1意味着無限的,預設是200。 如果不使用Servlet 3.0異步處理,預設是使用一樣的maxThreads設定。 如果使用Servlet 3.0異步處理,預設是使用大maxThreads和預期的并發請求的最大數量(同步和異步)。

tcpNoDelay:如果設定為true,TCP_NO_DELAY選項将被設定在伺服器套接字,而在大多數情況下提高性能。這是預設設定為true。

connectionLinger:秒數在這個連接配接器将持續使用的套接字時關閉。預設值是 -1,禁用socket 延遲時間。

URIEncoding:網站一般采用UTF-8作為預設編碼。

server:隐藏Tomcat版本資訊,首先隐藏HTTP頭中的版本資訊

compressableMimeType:配置想壓縮的資料類型

二、配置logging.properties檔案

   進入conf目錄,打開logging.properties檔案,将所有encoding = UTF-8這行前面加上‘#’,将此行注釋掉,否則在運作tomcat時,控制台裡的中文全部是亂碼,也可以将UTF-8改成GBK.

三、配置JVM

     進入bin目錄,建立一個setevn.bat檔案,然後用記事本打開,輸入下面的配置資訊

SET JAVA_HOME=D:Javajdk1.8.0_221jre

SET JAVA_OPTS=-server -Xms4096m -Xmx4096m -Xmn2048m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=12 -Xloggc:../logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+DisableExplicitGC      

 -server:表示這是應用于伺服器的配置,JVM 内部會有特殊處理的 

 -Xms4096m:設定JVM最小記憶體為2048m。此值可以設定與-Xmx相同,以避免每次垃圾回收完成後JVM重新配置設定記憶體。

 -Xmx4096m:設定JVM最大可用記憶體為2048MB

 -Xmn2048m:設定JVM新生代大小(JDK1.4之後版本,此設定等同于 -XX:NewSize 和 -XX:MaxNewSize)。一般-Xmn的大小是-Xms的1/2左右,不要設定的過大或過小, 過大導緻老年代變小,頻繁Full GC,過小導緻minor GC頻繁。如果不設定-Xmn,可以采用-XX:NewRatio=2來設定,也是一樣的效果

 -XX:NewSize:設定新生代大小

 -XX:MaxNewSize:設定最大的新生代大小

 -XX:PermSize:設定永久代大小

 -XX:MaxPermSize:設定最大永久代大小

 -XX:SurvivorRatio:在年輕代中,from(Survivor1)、to(Survivor2)與Eden的比值,若-XX:SurvivorRatio=10,由于from、to記憶體大小相等,from 、to分别占Young Generation的空間的1/12,Eden占10/12;

 -XX:NewRatio=4:設定年輕代(包括 Eden 和兩個 Survivor 區)與年老代的比值(除去永久代)。設定為 4,則年輕代與年老代所占比值為 1:4,年輕代占整個堆棧的 1/5; Xms=Xmx并且設定了Xmn的情況下,該參數不需要進行設定。

 -XX:MaxTenuringThreshold=10:設定垃圾最大年齡,預設為:15。如果設定為 0 的話,則年輕代對象不經過 Survivor 區,直接進入年老代。對于年老代比較多的應用,可以提高效率。如果将此值設定為一個較大值,則年輕代對象會在 Survivor 區進行多次複制,這樣可以增加對象再年輕代的存活時間,增加在年輕代即被回收的概論。需要注意的是,設定了 -XX:MaxTenuringThreshold,并不代表着,對象一定在年輕代存活10次才被晉升進入老年代,它隻是一個最大值,事實上,存在一個動态計算機制,計算每次晉入老年代的門檻值,取門檻值和MaxTenuringThreshold中較小的一個為準。

 -Xloggc:../logs/gc.log  GC日志檔案位置

-XX:+DisableExplicitGC:這個将會忽略手動調用 GC 的代碼使得 System.gc() 的調用就會變成一個空調用,完全不會觸發任何 GC

 注:以上-Xms -Xmx -Xmn 是按照8G的伺服器記憶體配置的,在實際配置中,需要使用者自行調試

判斷配置是否起作用,進入bin檔案夾中,打開指令行視窗,輸入catalina.bat configtest,出現如下頁面即代表配置成功

TOMCAT 8.5 配置優化以及JVM配置(windows server)