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


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

一、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:\Java\jdk1.8.0_221\jre

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,出現如下頁面即代表配置成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM