tomcat8 性能優化


一、編輯配置文件:vim /opt/tomcat/conf/server.xml
打開默認被注釋的連接池配置:
默認值:

<!--
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    maxThreads="150" minSpareThreads="4"/>
-->

 

修改為:

<Executor 
    name="tomcatThreadPool" 
    namePrefix="catalina-exec-"
    maxThreads="800" //最大並發數 
    minSpareThreads="50" //初始化時創建的線程數
    prestartminSpareThreads="true"
    maxQueueSize="300"
/>

重點參數解釋:
maxThreads:最大並發數,默認設置 200,一般建議在 600 ~ 900,根據硬件設施和業務來判斷
minSpareThreads:最小備用線程數,Tomcat初始化時創建的線程數,默認設置25
maxSpareThreads:最大備用線程數,tomcat啟動時的初始化的線程數,
prestartminSpareThreads:在Tomcat初始化的時候就初始化 minSpareThreads 的參數值,如果不等於 true,minSpareThreads的值就沒啥效果了
maxQueueSize:最大的等待隊列數,超過則拒絕請求


二、修改默認的鏈接參數配置:
默認值:

<Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

 

修改為:

<Connector 
   executor="tomcatThreadPool"
   port="8080" 
   protocol="org.apache.coyote.http11.Http11Nio2Protocol" 
   connectionTimeout="20000" 
   maxConnections="900" 
   redirectPort="8443" 
   enableLookups="false" 
   acceptCount="700" // 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理
   maxPostSize="10485760" 
   disableUploadTimeout="true" 
   compression="on" 
   compressionMinSize="2048" 
   acceptorThreadCount="2" 
   maxProcessors="1000"
   minProcessors="5"
   compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" 
   URIEncoding="UTF-8"
/>

重點參數解釋:
(1)、protocol Tomcat 8:設置 nio2 更好:org.apache.coyote.http11.Http11Nio2Protocol(如果這個用不了,就用下面那個)
protocol,Tomcat 6、7:設置 nio 更好:org.apache.coyote.http11.Http11NioProtocol

(2)、URIEncoding="UTF-8"
使得tomcat可以解析含有中文名的文件的url

(3)、enableLookups:禁用DNS查詢
如果希望調用request.getRemoteHost()進行DNS查詢,以返回遠程客戶的實際主機名,將enableLookups設為true。
如果希望忽略DNS查詢,僅僅返回IP地址,設為false(這樣提高了性能), 缺省情況下,DNS查詢是使能的。
一句話:是否反查域名,取值為:true 或 false 。為了提高處理能力,應設置為 false

(4)、disableUploadTimeout
disableUploadTimeout="true",類似於Apache中的keeyalive一樣,是否需要tomcat容器單獨設置上傳時間限制,這里是不用,還是使用標准的,不去給上傳的附件單獨做超時設置。

(5)connectionTimeout
connectionTimeout:網絡連接超時,單位毫秒。設置為 -1 表示永不超時。

(6)、acceptCount
acceptCount是當線程數達到maxThreads后,后續請求會被放入一個等待隊列,這個acceptCount是這個隊列的大小,如果這個隊列也滿了,就直接refuse connection.
一句話:acceptCount:當處理任務的線程數達到最大時,接受排隊的請求個數,默認100。

(7)、maxThreads
maxThreads:最大線程數,即同時處理的任務個數,默認值為200 , Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat可創建的最大的線程數,即最大並發數。保守推薦:600---900。

(8)、maxProcessors
與下面minProcessors相對應,具體解釋看下面。

(9)、minProcessors
在Java中線程是程序運行時的路徑,是在一個程序中與其它控制線程無關的、能夠獨立運行的代碼段。它們共享相同的地址空間。多線程幫助程序員寫出CPU最大利用率的高效程序,使空閑時間保持最低,從而接受更多的請求。通常Windows是1000個左右,Linux是2000個左右。

(10)、useURIValidationHack
減少它對一些url的不必要的檢查從而減省開銷,為提供性能可以設置為false

(11)、compression
compression :設置是否開啟GZip壓縮HTTP 壓縮可以大大提高瀏覽網站的速度,它的原理是,在客戶端請求網頁后,從服務器端將網頁文件壓縮,再下載到客戶端,由客戶端的瀏覽器負責解壓縮並瀏覽。相對於普通的瀏覽過程HTML,CSS,Javascript , Text ,它可以節省40%左右的流量。更為重要的是,它可以對動態生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網頁也能進行壓縮,壓縮效率驚人。

(12)、compressionMinSize
compressionMinSize="2048" 啟用壓縮的輸出內容大小,這里面默認為2KB

(13)、compressableMimeType
compressableMimeType:哪些類型需要壓縮,默認是text/html,text/xml,text/plain

(14)、maxPostSize:以 FORM URL 參數方式的 POST 提交方式,限制提交最大的大小,默認是 2097152(2兆),它使用的單位是字節。10485760 為 10M。如果要禁用限制,則可以設置為 -1。

(15)、acceptorThreadCount:用於接收連接的線程的數量,默認值是1。一般這個指需要改動的時候是因為該服務器是一個多核CPU,如果是多核 CPU 一般配置為 2.

(16)、超時控制:
修改conf/web.xml文件配置,設置session-timeout的值(單位:分鍾)


最后不要忘了把8443端口的地方也加上同樣的配置,因為如果我們走https協議的話,我們將會用到8443端口這個段的配置。


免責聲明!

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



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