一、編輯配置文件: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端口這個段的配置。