tomcat WEB應用部署及優化

一、部署環境

操作系統:Windows(XP/Win7/Server 2003/Server 2008)

JAVA運行環境:JDK 1.6(最新補丁包)

二、系統部署

1、JDK下載及安裝

JDK 1.6下載地址:

http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-windows-i586.exe

http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-windows-x64.exe

2、Tomcat下載及安裝

Tomcat7下載地址:http://tomcat.apache.org/download-70.cgi


在Windows環境中部署時可以下載32-bit/64-bit Windows Service Installer這個安裝包,安裝程序會自動添加Windows服務,並提供了兩個程序用於配置和監控Tomcat,尤其對於一般用戶而言通過圖形界面啓停Tomcat更易於操作。

3、 應用程序部署
Tomcat目錄結構:
bin ----------- 可執行程序目錄(Tomcat7w.exe)
conf ----------- 配置文件目錄(server.xml, web.xml)
lib ----------- 存放Tomcat依賴的jar文件
logs ----------- 日誌文件目錄
temp ----------- 臨時文件目錄
webapps ----------- 應用部署目錄,我們的應用程序就部署到該目錄中
work ----------- 存放JSP編譯後的class文件

在Eclipse環境中將項目導出成war文件,複製到webapps目錄下即可。
Tomcat啓動時會自動先解壓war文件,解壓出的目錄名爲war文件的文件名,然後讀取目錄中的文件來啓動我們的應用程序。
如果需要修改應用程序的配置,可直接修改目錄中的配置文件,或覆蓋目錄中的配置文件或class文件。

三、 系統優化
1、 JVM優化
 調整JVM內存
JVM默認的內存配置不適用於生產環境,很容易出現內存溢出等錯誤,可以使用開始菜單中的Configure Tomcat程序進行優化。(在Win7系統中要以管理員身份運行Configure Tomcat)



該界面上可以設置初始內存大小和最大內存大小,其對應的JAVA選項分別爲-Xms和-Xmx,也可以直接在Java Options輸入框中直接輸入參數。
優化參數及取值參考如下:
-XX:PermSize=128m
-XX:MaxPermSize=256m
-Xms1200m
-Xmx1200m
-Xss256k
JVM支持的最大內存大小受限於物理內存和操作系統,32位系統下限制在1.5G~2G,64位系統下無限制。

Configure Tomcat界面中修改後的參數存儲在Windows註冊表中:



 調整JVM爲server 版
JVM分爲client和server兩個版本,對於服務端的JAVA應用最好使用server版,可以使用開始菜單中的Configure Tomcat程序修改,默認的JVM是%JAVA_HOME%\jre\bin\client\jvm.dll,可修改爲server版的jvm:



1、Tomcat優化

使用線程池

打開conf/server.xml,增加:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />

最大線程500(一般服務器足以),最小空閒線程數20,線程最大空閒時間60秒。然後修改<Connector ...>節點,增加executor屬性,如:

<Connector port="80" protocol="HTTP/1.1"

executor="tomcatThreadPool"

connectionTimeout="30000"

redirectPort="443" ....../>

² 調整Connector連接參數

<Connector port="80" protocol="HTTP/1.1"

executor="tomcatThreadPool"

maxHttpHeaderSize="8192"

enableLookups="false"

redirectPort="8443"

acceptCount="100"

connectionTimeout="30000"

disableUploadTimeout="true"

URIEncoding=”UTF-8” />

參數分析:

(1)、maxHttpHeaderSize=”8192”

此選項用於配置:來自於客戶端請求的Request和Response的HTTP header的最大長度,以字節計算。如果不設置,該屬性爲4096(4K)。

(2)、maxThreads="500"

Connector創建的請求處理線程的最大值,它決定了能夠同時處理併發請求的最大值。如果不指定,該屬性值爲200。Tomcat的線程數量太多會導致切換過多,性能下降嚴重。這個數量應該是你單個機器的承載能力,壓力測試下得出的結果。不可任意加大。一般情況下,256-512個已經非常高的數值了。

(3)、minSpareThreads="20"

tomcat初始化時創建的線程數,即最小工作線程數目。

(4)、maxSpareThreads="100"

tomcat所允許的最大線程數,一旦創建的線程超過這個數,Tomcat就將關閉不 再需要的Socket線程。

(5)、enableLookups="false"

使用允許DNS查詢,通常情況下設置爲false。如果爲true則tomcat會損耗一部分系統性能。

(6)、redirectPort="8443"

這裏系統默認的,它指定轉發端口,如果當前只支持non-SSL請求,在需要安全通信的場所,將把客戶請求轉發至SSL的redirectPort端口。

(7)、acceptCount=“100”

當所有請求處理線程都被佔用時,允許接收請求隊列的最大長度。當隊列已滿時, 任何收到的請求都將被拒絕。缺省值爲10。

(8)、connectionTimeout="30000"

Connector接收連接後,等待提供請求URI的時間,缺省值爲60000(60秒)。

(9)、disableUploadTimeout="true"

該標誌位表明當執行servlet時,是否允許servlet容器使用一個不同的、更長的連接超時。啓用該標誌位將導致在上傳數據時,要麼使用更長的時間完成上傳,要麼出現更長的超時。如果不指定,該屬性爲“false”。

² 使用APR來增強Tomcat性能(可選)

Tomcat可以使用APR來提供超強的可伸縮性和性能,更好地集成本地服務器技術。APR(Apache Portable Runtime)是一個高可移植庫,它是Apache HTTP Server 2.x的核心。APR有很多用途,包括訪問高級IO功能(例如sendfile,epoll和open SSL),OS級別的功能(隨機數生成、系統狀態等等),本地進程管理(共享內存、NT管道和UNIX socket)。這些功能使和Tomcat作爲一個通常的前臺WEB服務器,能更好的和其它本地WEB技術集成,總體上讓Java更有效率作爲一個高性能Web服務器平臺而不是簡單作爲後臺容器。

下載Tomcat Native:

http://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.1.27/binaries/tomcat-native-1.1.27-win32-bin.zip

解壓後將tcnative-1.dll文件複製到Tomcat安裝目錄的bin目錄下即可。

² 使用帶有NIO的HTTP1.1的超文件傳輸協議(可選)

Java的IO操作集中在java.io這個包中,是基於流阻塞API(即BIO,Block IO)。對於大多數應用來說,這樣的API使用很方便,然而,一些對性能要求較高的應用,尤其是服務器端應用,往往需要一個更爲有效的方式來處理IO。從JDK1.4起,NIO API作爲一個基於緩衝區,並能提供非阻塞IO操作的API(即NIO,non-blocking IO)被引入。

BIO與NIO一個比較重要的不同,是我們使用BIO的時候往往會引入多線程,每個連接一個單獨的線程;而NIO則是使用單線程或者只使用少量的多線程,每個連接共用一個線程。

而Tomcat7應用NIO只是用在處理髮送、接收信息的時候用到,也就是說:tomcat7還是傳統的多線程Servlet。因此即使我們的JAVA應用使用ThreadLocal的,例如JSF的FaceContext、Hibernate的session管理、Strusts的context的管理等等,也不會因爲使用NIO而受到影響。

更改方法:

打開tomcat的配置文件conf/server.xml

找到:

<Connector port="8080" protocol="http1.1" .....

改爲:

<Connector port="8080"

protocol="org.apache.coyote.http11.Http11NioProtocol"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章