服務器所能提供CPU、內存、硬盤的性能對處理能力有決定性影響。Tomcat性能能夠經過提高服務器的性能來進行調優,但通常公司不會選擇這種調優方式,而使用優化配置參數來調優。javascript
1. JVM參數調優,即Tomcat堆虛擬內存css
二、禁用DNS查詢,打開壓縮html
三、調整線程數 java
四、改變運行模式 web
五、禁用AJP鏈接器apache
-Xms<size> 表示JVM初始化堆的大小瀏覽器
-Xmx<size> 表示JVM堆的最大值tomcat
-Xss<size> 是指設定每一個線程的堆棧大小。服務器
-XX:PermSize<size> JVM初始分配的非堆內存
-XX:MaxPermSize<size> JVM最大容許分配的非堆內存,按需分配併發
這兩個值的大小通常根據須要進行設置。當應用程序須要的內存超出堆的最大值時虛擬機就會提示內存溢出,而且致使應用服務崩潰。所以通常建議堆的最大值設置爲可用內存的最大值的80%。在catalina.bat中,設置JAVA_OPTS='-Xms256m -Xmx512m',表示初始化內存爲256MB,可使用的最大內存爲512MB。
A、禁用DNS查詢
爲了消除DNS查詢對性能的影響咱們能夠關閉DNS查詢,方式是修改server.xml文件中的enableLookups參數值:
<Connector port="8080" enableLookups="false" redirectPort="8443" />
B、打開壓縮
1)compression=」on」 打開壓縮功能
2)compressionMinSize=」2048″ 啓用壓縮的輸出內容大小,這裏面默認爲2KB
3)noCompressionUserAgents=」gozilla, traviata」 對於如下的瀏覽器,不啓用壓縮
4)compressableMimeType=」text/html,text/xml」 壓縮類型
<Connector port=」8080″ protocol=」HTTP/1.1″ compression=」on」 compressionMinSize=」2048″
compressableMimeType=」text/html,text/xml,text/javascript,text/css,text/plain」 />
Tomcat中能夠經過修改minSpareThreads和maxSpareThreads的值來控制線程數。
minSpareThreads 最小備用線程數,tomcat啓動時的初始化的線程數
maxSpareThreads 最大備用線程數,一旦建立的線程超過這個值,Tomcat就會關閉再也不須要的socket線程
maxThreads tomcat起動的最大線程數,即同時處理的任務個數,默認值爲200
acceptCount 當tomcat起動的線程數達到最大時,接受排隊的請求個數,默認值爲100
web server容許的最大鏈接數還受制於操做系統的內核參數設置,一般Windows是2000個左右,Linux是1000個左右。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
A、tomcat的3種運行模式
(1)BIO
默認的模式,性能很是低下,沒有通過任何優化處理和支持.
(2)NIO
NIO(new I/O),是Java SE 1.4及後續版本提供的一種新的I/O操做方式(即java.nio包及其子包)。Java nio是一個基於緩衝區、並能提供非阻塞I/O操做的Java API,所以nio也被當作是non-blocking I/O的縮寫。它擁有比傳統I/O操做(bio)更好的併發運行性能。
(3)APR
安裝起來最困難,可是從操做系統級別來解決異步的IO問題,大幅度的提升性能。
B、優化運行模式選擇
(1)啓動NIO模式
修改server.xml裏的Connector節點,修改protocol爲org.apache.coyote.http11.Http11NioProtocol
<Connector port="8080" enableLookups="false" redirectPort="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"/>
(2)啓動APR模式
安裝apr,apr-iconv,apr-uitl,tomcat-native。添加環境變量LD_LIBRARY_PATH。
修改server.xml配置文件中protocol修改爲org.apache.coyote.http11.Http11AprProtocol
<Connector port="8080" enableLookups="false" redirectPort="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"/>
AJPv13協議是面向包的。WEB服務器和Servlet容器經過TCP鏈接來交互;爲了節省SOCKET建立的昂貴代價,WEB服務器會嘗試維護一個永久TCP鏈接到servlet容器,而且在多個請求和響應週期過程會重用鏈接。
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> -->