全面的tomcat優(yōu)化參數(shù)總結(jié),都在這里了
概述
最近準(zhǔn)備對(duì)xx系統(tǒng)做一些優(yōu)化工作,這里先從tomcat參數(shù)方面入手,后面再針對(duì)mysql和具體sql去做一下優(yōu)化。下面基于之前介紹的tomcat參數(shù)優(yōu)化來做整體介紹。
1、目前tomcat配置
可以看到目前tomcat是基本沒做優(yōu)化的,基本為默認(rèn)參數(shù)。


2、優(yōu)化后的配置
2.1、注釋AJP協(xié)議
這個(gè)影響倒不是很大。

2.2、設(shè)置JVM
這里要根據(jù)服務(wù)器內(nèi)存,然后自己規(guī)劃下就行。

2.3、核心參數(shù)
這里的參數(shù)比較重要,影響會(huì)比較大。

3、啟動(dòng)日志
可以看到通訊模式改為了NIO。

參數(shù)說明
1、內(nèi)存--設(shè)置JVM參數(shù)
- JAVA_OPTS="-XX:PermSize=256M -XX:MaxPermSize=512m -Xms2048m -Xmx4096m -Duser.timezone=Asia/Shanghai"
說明:
- -Xms:設(shè)置JVM初始內(nèi)存大小(默認(rèn)是物理內(nèi)存的1/64)
- -Xmx:設(shè)置JVM可以使用的最大內(nèi)存(默認(rèn)是物理內(nèi)存的1/4,建議:物理內(nèi)存80%)
- -XX:PermSize :為JVM啟動(dòng)時(shí)Perm的內(nèi)存大小
- -XX:MaxPermSize :為最大可占用的Perm內(nèi)存大小(默認(rèn)為32M)
2、禁用AJP協(xié)議
- 注釋 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
ajp協(xié)議是tomcat為了動(dòng)靜資源處理分離時(shí),通過該協(xié)議可以將css、js等靜態(tài)資源請(qǐng)求轉(zhuǎn)發(fā)到Apache的http服務(wù)器處理,提高并發(fā)量。但是在優(yōu)化tomcat時(shí),沒有用到Apache服務(wù)器,則需要將其禁用。
3、將BIO通訊模式修改為NIO通訊模式
- <Connector connectionTimeout="20000" port="8066" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8448"/>
其中,原來的protocol="HTTP/1.1"表示遵循h(huán)ttp1.1協(xié)議,同時(shí),也是一個(gè)最原始的未經(jīng)優(yōu)化的通信協(xié)議,修改之后的 protocol="org.apache.coyote.http11.Http11NioProtocol" ,表示以 NIO模式啟動(dòng)。
4、并發(fā)--啟用外部連接池
maxThreads:tomcat起動(dòng)的最大線程數(shù),即同時(shí)處理的任務(wù)個(gè)數(shù),默認(rèn)值為150
- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="400" minSpareThreads="4"/>
- <Connector connectionTimeout="20000" port="8066" executor="tomcatThreadPool" protocol="org.apache.coyote.http11.Http11NioProtocol"/>
5、配置緩存
- <Connector port="xxx"
- compression="on"
- compressionMinSize="2048"
- compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
- connectionTimeout="20000"
- disableUploadTimeout="true" />
說明:
- compression 打開壓縮功能
- compressionMinSize 啟用壓縮的輸出內(nèi)容大小,這里面默認(rèn)為2KB
- compressableMimeType 壓縮類型
- connectionTimeout 定義建立客戶連接超時(shí)的時(shí)間. 如果為 -1, 表示不限制建立客戶連接的時(shí)間
6、優(yōu)化連接器--最終模板
- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="400" minSpareThreads="4"/>
- <Connector port="8080" executor="tomcatThreadPool" protocol="org.apache.coyote.http11.Http11NioProtocol"
- connectionTimeout="20000"
- enableLookups="false"
- maxPostSize="10485760"
- URIEncoding="UTF-8"
- useBodyEncodingForURI="true"
- maxConnections="1000"
- acceptCount="1000"
- minProcessors="100"
- maxProcessors="1000"
- disableUploadTimeout="true"
- compression="on"
- compressionMinSize="2048"
- compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
- SSLEnabled="false"
- />
說明:
- acceptCount:允許的最大連接數(shù),應(yīng)大于等于 maxProcessors ,默認(rèn)值為 100
- enableLookups:是否反查域名,取值為: true 或 false 。為了提高處理能力,應(yīng)設(shè)置為 false
- connectionTimeout:網(wǎng)絡(luò)連接超時(shí),單位:毫秒。設(shè)置為 0 表示永不超時(shí),這樣設(shè)置有隱患的。通常可設(shè)置為20000毫秒。
- disableUploadTimeOut:允許Servlet容器,正在執(zhí)行使用一個(gè)較長的連接超時(shí)值,以使Servlet有較長的時(shí)間來完成它的執(zhí)行,默認(rèn)值為false
- maxPostSize:指定POST方式請(qǐng)求的最大量,沒有指定默認(rèn)為2097152