Tomcat默認的配置已是通過優化的了,留給咱們可優化的空間很小,我 們主要能調整的是:跟具體使用場景相關的設置,大體有:javascript
1:合理分配Tomcat須要的內存 這個是在啓動Tomcat的時候設置catalina.sh中的JAVA_OPTS,常見設置以下:css
(1)-server:啓用JDK的Server版html
(2)-Xms:虛擬機初始化時的最小內存java
(3)-Xmx:虛擬機可以使用的最大內存(建議到物理內存的80%)apache
(4)-XX:PermSize:持久代初始值tomcat
(5)-XX:MaxPermSize:持久代最大內存(默認是32M)網絡
(6)-XX:MaxNewSize:新生代內存的最大內存(默認是16M)併發
說明:異步
(1)通常設置-Xms、-Xmx相等以免在每次GC後調整堆的大小。由於默認空餘堆內存小於40% 時, JVM就會增大堆直到-Xmx的最大限制;空餘堆內存大於70%時,JVM會減小堆直到-Xms的 最小限制。 (2)察看配置是否生效:jmap -heap tomcat的進程號性能
2:Tomcat自己的配置優化 在server.xml中的 <Connector>中配置,常見設置以下:
(1)maxConnections :最大鏈接數,對BIO模式,默認等於maxThreads ;對NIO默認10000; 對APR/native默認8192
(2)maxThreads:最大線程數,即同時處理的任務個數,默認值爲200
(3)acceptCount:當處理任務的線程數達到最大時,接受排隊的請求個數,默認100
(4)minSpareThreads:最小空閒線程數,默認10
(5)compression :設置是否開啓GZip壓縮
(6)compressableMimeType:哪些類型須要壓縮,默認是text/html,text/xml,text/plain
(7)compressionMinSize:啓用壓縮的輸出內容大小,默認爲2048
(8)enableLookups:是否反查域名,爲了提升處理能力,應設置爲 false
(9)connectionTimeout:網絡鏈接超時,單位毫秒。設置爲 -1 表示永不超時,一般可設置 爲2000毫秒。
說明:
(1)若是要加大併發鏈接數,應同時加大maxThreads和acceptCount,能夠兩個設置同樣
(2)WebServer容許的最大鏈接數還受制於操做系統的內核參數設置,可經過ulimit -a 查看
(3)若是配置了<Executor>,在<Connector>中經過executor屬性指定參照<Executor>,那麼 <Connector>中關於線程的配置失效,以<Executor>中配置爲準
3:關於BIO/NIO/APR
(1)BIO是最穩定最老的一個鏈接器,是採用阻塞的方式,意味着每一個鏈接線程綁定到每一個 Http請求,直到得到Http響應返回,若是Http客戶端請求的是keep-Alive鏈接,那麼這些 鏈接也許一直保持着直至達到timeout時間,這期間不能用於其它請求。
(2)NIO是使用Java的異步IO技術,不作阻塞,要使用的話,直接修改server.xml裏的 Connector節點,修改protocol爲 : protocol="org.apache.coyote.http11.Http11NioProtocol"
(3)APR是使用原生C語言編寫的非堵塞I/O,可是須要安裝apr和native,直接啓動就支持 apr,能大幅度提高性能。使用時指定protocol爲 protocol=「org.apache.coyote.http11.Http11AprProtocol」 。 能夠到http://apr.apache.org/download.cgi去下載,大體的安裝步驟以下:
A:安裝apr ./configure --prefix=/usr/local/apr make make install
B:安裝apr-iconv ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make make install
C:安裝apr-util ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr- iconv=/usr/local/apr-iconv/bin/apriconv make make install
D:安裝tomcat-native ,就在Tomcat的bin下自帶 tar zxvf tomcat-native.tar.gz cd tomcat-native-1.1.29-src/jni/native ./configure --with-apr=/usr/local/apr make make install
E:設置 apr 的環境變量 進入Tomcat的bin路徑下,打開catalina.sh,在文件的#!/bin/sh下添加以下內容: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib export LD_LIBRARY_PATH 這樣就只是給這個TOMCAT添加了APR,不破壞其它TOMCAT的配置 G:從新啓動Tomcat,查看日誌信息,應該有相似以下的信息: org.apache.catalina.core.AprLifecycleListener.init Loaded APR based Apache Tomcat Native library 1.1.29 using APR version 1.5.0.
參考配置以下:
<Connector port="8080" protocol=" org.apache.coyote.http11.Http11AprProtocol " URIEncoding="UTF-8"
maxConnections="10000"
maxThreads="2000"
acceptCount="2000"
minSpareThreads="100"
compression="on"
compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="20000"
長鏈接和短鏈接的性能測試:
http://blog.csdn.net/ystyaoshengting/article/details/49300003
tomcat長鏈接、短鏈接配置及用途:
http://blog.csdn.net/ystyaoshengting/article/details/49512069
何時用長鏈接,短鏈接?(下面博文最後面)
http://www.cnblogs.com/0201zcr/p/4694945.html
Tomcat的四種基於HTTP協議的Connector性能比較:
http://www.cnblogs.com/sunxucool/p/3227366.html
Tomcat 7優化前及優化後的性能對比:
http://my.oschina.net/lianss/blog/272230?fromerr=rcI9PseP#OSC_h2_1