通過應用程序的連接器(Connector)進行性能控制的的參數是創建的處理請求的線程數。Tomcat使用線程池加速響應速度來處理請求。在Java中線程是程序運行時的路徑,是在一個程序中與其它控制線程無關的、能夠獨立運行的代碼段。它們共享相同的地址空間。多線程幫助程序員寫出CPU最大利用率的高效程序,使空閑時間保持最低,從而接受更多的請求,以下以tomcat5為例:
maxThreads:Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat可創建的最大的線程數。
acceptCount:指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理。
connnectionTimeout:網絡連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。
minSpareThreads:Tomcat初始化時創建的線程數。
maxSpareThreads:一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。
最好的方式是多設置幾次并且進行測試,觀察響應時間和內存使用情況。在不同的機器、操作系統或虛擬機組合的情況下可能會不同,而且并不是所有人的web站點的流量都是一樣的,因此沒有一刀切的方案來確定線程數的值。
Tomcat中使用APR庫,其實就是在Tomcat中使用JNI的方式來讀取文件以及進行網絡傳輸。可以大大提升Tomcat對靜態文件的處理性能,同時如果你使用了HTTPS方式傳輸的話,也可以提升SSL的處理性能。
一般在Windows下,可以直接下載編譯好的二進制版本的dll庫文件來使Tomcat啟用APR,一般建議拷貝庫文件tcnative-1.dll到Tomcat的bin目錄下。而在Linux下,可以直接解壓和安裝bin目錄下的tomcat_native.tar.gz文件,編譯之前要確保apr庫已經安裝。
怎么才能判斷Tomcat是否已經啟用了APR庫呢?方法是通過看Tomcat的啟動日志:
如果沒有啟用APR,則啟動日志一般有這么一條:
org.apache.coyote.http11.Http11Protocolstart
如果啟用了APR,則這條日志就會變成:
org.apache.coyote.http11.Http11AprProtocolstart
tcnative-1.dll下載地址:http://tomcat.heanet.ie/native/
HTTP壓縮可以大大提高瀏覽網站的速度,它的原理是,在客戶端請求網頁后,從服務器端將網頁文件壓縮,再下載到客戶端,由客戶端的瀏覽器負責解壓縮并瀏覽。相對于普通的瀏覽過程HTML,CSS,Javascript,Text,它可以節省40%左右的流量。更為重要的是,它可以對動態生成的,包括CGI、PHP,JSP,ASP,Servlet,SHTML等輸出的網頁也能進行壓縮,壓縮效率驚人。 1)compression="on"打開壓縮功能
2)compressionMinSize="2048"啟用壓縮的輸出內容大小,這里面默認為2KB
3)noCompressionUserAgents="gozilla,traviata"對于以下的瀏覽器,不啟用壓縮
4)compressableMimeType="text/html,text/xml"壓縮類型