前言
Tomcat作爲Web應用的服務器,目前絕大多數公司都是用其作爲應用服務器的,應用服務器的執行效率會影響系統執行,這裏會講Tomcat怎樣進行配置能提高處理性能。另外必須提到對應的JVM參數的優化的一些經驗。
Tomcat運行模式
分3種模式: bio,nio,apr 一般使用nio模式
bio效率低,apr對系統配置有一些比較高的要求
確認Tomcat的運行模式
配置文件 server.xml
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="1024"
minSpareThreads="512"
prestartminSpareThreads="true" />
關鍵配置
maxThreads
最大線程數, 默認是200
minSpareThread
最小活躍線程數, 默認是25
maxQueueSize
最大的等待隊列個數,超過則請求拒絕默認值是Integer.MAX_VALUE ,一般不改變。在某些緊急狀態修復問題需要調整
連接器(Connector)優化
Connector是連接器,負責接收客戶的請求,以及向客戶端回送響應的消息。所以Connector的優化是重要部分。默認情況下 Tomcat只支持200線程訪問,超過這個數量的連接將被等待甚至超時放棄,所以我們需要提高這方面的處理能力。
nio配置- server.xml
<Connector port="14081" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
executor="tomcatThreadPool"
URIEncoding="UTF-8"
compression="on"
useBodyEncodingForURI="true"
enableLookups="false"
redirectPort="14443" />
影響性能配置
- protocol
org.apache.coyote.http11.Http11Protocol
- 阻塞式的Java連接器org.apache.coyote.http11.Http11NioProtocol
- 不阻塞Java連接器org.apache.coyote.http11.Http11AprProtocol
- APR / native 連接器
選擇不阻塞ava連接器
- enableLookups
若是你想request.getRemoteHost()的調用履行,以便返回的長途客戶端的實際主機名的DNS查詢,則設置爲true。設置爲false時跳過DNS查找,並返回字符串的IP地址(從而提高性能)。默認場景下,禁用DNS查找
- compression
設置成on,開啓壓縮
禁用AJP鏈接器
使用Nginx+tomcat的架構,用不着AJP協議,所以把AJP連接器禁用
server.xml註釋掉以下配置
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />
思考題
1. 線上應用系統出現問題,怎麼快速定位系統哪塊資源問題