Tomcat6優化,server.xml屬性說明

Tomcat6優化,server.xml屬性說明
2010年04月16日 星期五 14:52
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,目前最新版本是6.x,相對5.x性能提升很多,主要優化了內存使用,增強IO能力,重新構造集羣功能。

 

     近期對Tomcat6.x作深入學習,參考上述聲明的Tomcat全攻略,由於筆者是2001年針對Tomcat4.x所寫,故參考之並針對Tomcat6.x做了總結,形成此篇學習筆記,希望對學習的人有所幫助,本文涵蓋了:Tomcat目錄、Server.xml元素講解,數據庫連接池配置、線程池配置、虛擬目錄配置。關於如何下載、安裝、運行Tomcat略,請google,相信有詳細的文章講述。

 

 

tomcat的目錄結構如下:

 

目錄名

 

簡介

 

bin

 

存放啓動和關閉tomcat腳本

 

conf

 

包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml

 

work

 

存放jsp編譯後產生的class文件

 

webapp

 

存放應用程序示例,以後你要部署的應用程序也要放到此目錄

 

logs

 

存放日誌文件

 

lib

 

這三個目錄主要存放tomcat所需的jar文件

 

 

 

server.xml配置簡介

 

 

元素名

 

屬性

 

解釋

 

server

 

port

 

指定一個端口,這個端口負責監聽關閉tomcat的請求

 

shutdown

 

指定向端口發送的命令字符串

 

GlobalNamingResources

 

 

服務器的全局JNDI資源,可以有子標籤<Resource></Resource>

 

Executor(線程池,一個或多個Connector可以共享此線程池)

 

name

 

線程池名稱,名稱必須唯一

 

namePrefix

 

線程的名字前綴,用來標記線程名字的,這樣每個線程就用這個前綴加上線程編號了,比如 catalina-exec-1 、catalina-exec-2

 

maxThreads

 

允許的最大線程池裏的線程數量,默認是200,大的併發應該設置的高一些,反正只是限制而已,不佔用資源

 

minSpareThreads

 

最小的保持活躍的線程數量,默認是25.這個要根據負載情況自行調整了。太小了就影響反應速度,太大了白白佔用資源

 

maxIdleTime

 

最小的保持活躍的線程數量,默認是25.這個要根據負載情況自行調整了。太小了就影響反應速度,太大了白白佔用資源

 

threadPriority

 

線程的等級。默認是Thread.NORM_PRIORITY

 

service

 

name

 

指定service的名字

 

Connector (表示客戶端和service之間的連接)

 

port

 

指定服務器端要創建的端口號,並在這個斷口監聽來自客戶端的請求

 

minProcessors

 

服務器啓動時創建的處理請求的線程數

 

maxProcessors

 

最大可以創建的處理請求的線程數

 

enableLookups

 

如果爲true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若爲false則不進行DNS查詢,而是返回其ip地址

 

redirectPort

 

指定服務器正在處理http請求時收到了一個SSL傳輸請求後重定向的端口號

 

acceptCount

 

指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理

 

connectionTimeout

 

指定超時的時間數(以毫秒爲單位)

 

Engine (表示指定service中的請求處理機,接收和處理來自Connector的請求)

 

name

 

 

defaultHost

 

指定缺省的處理請求的主機名,它至少與其中的一個host元素的name屬性值是一樣的

 

jvmRoute

 

 

host (表示一個虛擬主機、並且可以包含Context子節點配置虛擬目錄)

 

name

 

指定主機名

 

appBase

 

應用程序基本目錄,即存放應用程序的目錄

 

unpackWARs

 

如果爲true,則tomcat會自動將WAR文件解壓,否則不解壓,直接從WAR文件中運行應用程序

 

autoDeploy

 

自動部署

 

xmlValidation

 

是否驗證xml

 

xmlNamespaceAware

 

 

Realm (表示存放用戶名,密碼及role的數據庫)

 

className

 

指定Realm使用的類名,此類必須實現org.apache.catalina.Realm接口

 

Context(host子節點配置虛擬目錄)

 

path

 

虛擬目錄名稱

 

docBase

 

物理路徑

 

Debug

 

Debug模式

 

Reload

 

True 重新加載,修改後自動加載

 

上面我們講述了server .xml個元素的含義,下面我們給出詳細示例

 

Tomcat數據庫連接池配置如下:

server.xml配置Resource

Xml代碼 Tomcat6.x目錄與server.xml詳解 - 冰木木 - 舒暢心情

 

  1. <Resource name="jdbc/ExampleDB" auth="Container" type="javax.sql.DataSource"  
  2.                maxActive="100" maxIdle="30" maxWait="10000"  
  3.                username="APP" password="APP" driverClassName="org.apache.derby.jdbc.ClientDriver"  
  4.                url="jdbc:derby://localhost:1527/springside-example;create=true"/>  

 

<Resource name="jdbc/ExampleDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="APP" password="APP" driverClassName="org.apache.derby.jdbc.ClientDriver" url="jdbc:derby://localhost:1527/springside-example;create=true"/>

 

context.xml文件增加:

 

Xml代碼 Tomcat6.x目錄與server.xml詳解 - 冰木木 - 舒暢心情

 

  1. <WatchedResource>WEB-INF/web.xml</WatchedResource>  
  2.        
  3.      <ResourceLink name="jdbc/ExampleDB"    global="jdbc/ExampleDB"    type="javax.sql.DataSource"/>  
  4.       

 

<WatchedResource>WEB-INF/web.xml</WatchedResource> <ResourceLink name="jdbc/ExampleDB" global="jdbc/ExampleDB" type="javax.sql.DataSource"/>

 

Tomcat共享線程池配置:

取消Executor註釋,修改連接數至自己合適的數值既可。

 

Xml代碼 Tomcat6.x目錄與server.xml詳解 - 冰木木 - 舒暢心情

 

  1. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"   
  2.         maxThreads="200" minSpareThreads="100" maxIdleTime="60000"/>  

 

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

 

executor="tomcatThreadPool" 標明此連接使用上面配置的名稱爲tomcatThreadPool的連接池,無屬性共享連接不會生效 protocol表示使用的是 http協議 端口號爲8080

Java代碼 Tomcat6.x目錄與server.xml詳解 - 冰木木 - 舒暢心情

 

  1. <Connector port="8080" protocol="HTTP/1.1" redirectPort="8443"   
  2.                 connectionTimeout="20000"   
  3.                 executor="tomcatThreadPool"  
  4.                 acceptCount="100"  
  5.                 useBodyEncodingForURI="true"  
  6.                 enableLookups="false"  
  7.                  />  

 

<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443"                connectionTimeout="20000"                executor="tomcatThreadPool"               acceptCount="100"               useBodyEncodingForURI="true"               enableLookups="false"                />

  

虛擬目錄配置:

在<host></host>之間增加如下

 

<!-- 配置虛擬目錄,例如:%09http://localhost:8080 -->

 

Xml代碼 Tomcat6.x目錄與server.xml詳解 - 冰木木 - 舒暢心情

 

  1. <Context path="/" docBase="D:\workspace\code\HBJH\web"></Context>  

 

<Context path="/" docBase="D:\workspace\code\HBJH\web"></Context>

發佈了32 篇原創文章 · 獲贊 0 · 訪問量 8663
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章