全面的tomcat優化參數總結,都在這里了
概述
最近準備對xx系統做一些優化工作,這里先從tomcat參數方面入手,后面再針對mysql和具體sql去做一下優化。下面基于之前介紹的tomcat參數優化來做整體介紹。
1、目前tomcat配置
可以看到目前tomcat是基本沒做優化的,基本為默認參數。


2、優化后的配置
2.1、注釋AJP協議
這個影響倒不是很大。

2.2、設置JVM
這里要根據服務器內存,然后自己規劃下就行。

2.3、核心參數
這里的參數比較重要,影響會比較大。

3、啟動日志
可以看到通訊模式改為了NIO。

參數說明
1、內存--設置JVM參數
- JAVA_OPTS="-XX:PermSize=256M -XX:MaxPermSize=512m -Xms2048m -Xmx4096m -Duser.timezone=Asia/Shanghai"
說明:
- -Xms:設置JVM初始內存大小(默認是物理內存的1/64)
- -Xmx:設置JVM可以使用的最大內存(默認是物理內存的1/4,建議:物理內存80%)
- -XX:PermSize :為JVM啟動時Perm的內存大小
- -XX:MaxPermSize :為最大可占用的Perm內存大小(默認為32M)
2、禁用AJP協議
- 注釋 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
ajp協議是tomcat為了動靜資源處理分離時,通過該協議可以將css、js等靜態資源請求轉發到Apache的http服務器處理,提高并發量。但是在優化tomcat時,沒有用到Apache服務器,則需要將其禁用。
3、將BIO通訊模式修改為NIO通訊模式
- <Connector connectionTimeout="20000" port="8066" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8448"/>
其中,原來的protocol="HTTP/1.1"表示遵循http1.1協議,同時,也是一個最原始的未經優化的通信協議,修改之后的 protocol="org.apache.coyote.http11.Http11NioProtocol" ,表示以 NIO模式啟動。
4、并發--啟用外部連接池
maxThreads:tomcat起動的最大線程數,即同時處理的任務個數,默認值為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 啟用壓縮的輸出內容大小,這里面默認為2KB
- compressableMimeType 壓縮類型
- connectionTimeout 定義建立客戶連接超時的時間. 如果為 -1, 表示不限制建立客戶連接的時間
6、優化連接器--最終模板
- <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:允許的最大連接數,應大于等于 maxProcessors ,默認值為 100
- enableLookups:是否反查域名,取值為: true 或 false 。為了提高處理能力,應設置為 false
- connectionTimeout:網絡連接超時,單位:毫秒。設置為 0 表示永不超時,這樣設置有隱患的。通常可設置為20000毫秒。
- disableUploadTimeOut:允許Servlet容器,正在執行使用一個較長的連接超時值,以使Servlet有較長的時間來完成它的執行,默認值為false
- maxPostSize:指定POST方式請求的最大量,沒有指定默認為2097152