Apache-tomcat
總體說明
官網(wǎng):http://tomcat.apache.org/
版本:7.0.x
tomcat目錄結(jié)構(gòu)及管件文件
Apache-Tomcat
|
+-- bin --存放tomcat在window或linux平臺下操作的腳本文件
+ |
+ +-- startup.sh --tomcat在linux下的啟動腳本
+ +-- startup.bat --tomcat在windows下的啟動腳本
+ +-- version.sh --tomcat在linux下的查看版本腳本
+ +-- version.bat --tomcat在windows下的查看版本腳本
+ +-- shutdown.sh --tomcat在linux下的關(guān)閉腳本
+ +-- shutdown.bat --tomcat在windows下的關(guān)閉腳本
+ +-- ……
+-- conf --存放tomcat所有的配置文件
+ |
+ +-- Catalina
+ +-- |
+ +-- +-- localhost --通過配置的放置進(jìn)行部署
+ +-- server.xml --tomcat的主要配置文件
+ +-- web.xml --默認(rèn)web應(yīng)用使用到的配置,子項(xiàng)目將會繼承于此
+ +-- ……
+-- lib --存放tomcat所需要的以及作用于全局的jar
+-- logs --存放日志文件
+-- temp --臨時目錄
+-- webapps --應(yīng)用程序部署目錄
+-- work --存放JSP文件的轉(zhuǎn)譯和編譯文件目錄
+-- LICENSE
+-- NOTICE
+-- RELEASE-NOTES
+-- RUNNING.TXT
tomcat的類的優(yōu)先級順序
在tomcat部署的應(yīng)用程序中,放置在webprj/WEB-INF/classes/*.class文件最優(yōu)先被使用。
技巧:當(dāng)我們需要覆蓋第三方或其他商業(yè)jar中的class文件時,可以通過在這個目錄中建立相同包名.類名的class進(jìn)行覆蓋。
conf/server.xml的說明
典型tomcat中server.xml配置| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?xml?version='1.0'?encoding='utf-8'?> <Server?port="8005"?shutdown="SHUTDOWN"> ????<Listener?className="org.apache.catalina.startup.VersionLoggerListener"?/> ????<Listener?className="org.apache.catalina.core.AprLifecycleListener"?SSLEngine="on"?/> ????<Listener?className="org.apache.catalina.core.JasperListener"?/> ????<Listener?className="org.apache.catalina.core.JreMemoryLeakPreventionListener"?/> ????<Listener?className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"?/> ????<Listener?className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"?/> ????<GlobalNamingResources> ????????<Environment?name="maxExemptions"?value="10"?type="java.lang.Integer"?override="false"?/> ????????<Resource?auth="Container"?factory="com.alibaba.druid.pool.DruidDataSourceFactory" ????????????name="DefaultDataSource"?username="dbuser"?password="******"?maxActive="10"?maxIdle="2" ????????????maxWait="5000"?type="javax.sql.DataSource"?url="dbconnecturl"?/> ????</GlobalNamingResources> ????<Service?name="Catalina"> ????????<Executor?name="tomcatThreadPool"?namePrefix="catalina-exec-" ????????????maxThreads="150"?minSpareThreads="4"?/> ????????<Connector?port="8080"?protocol="HTTP/1.1" ????????????connectionTimeout="20000"?redirectPort="8443"?/> ????????<Connector?port="8009"?protocol="AJP/1.3"?redirectPort="8443"?/> ????????<Engine?name="Catalina"?defaultHost="localhost"> ????????????<Realm?className="org.apache.catalina.realm.LockOutRealm"> ????????????????<Realm?className="org.apache.catalina.realm.UserDatabaseRealm"?resourceName="UserDatabase"?/> ????????????</Realm> ????????????<Host?name="localhost"?appBase="webapps"?unpackWARs="true"?autoDeploy="true"> ????????????????<Valve?className="org.apache.catalina.valves.AccessLogValve" ????????????????????directory="logs"?prefix="localhost_access_log."?suffix=".txt" ????????????????????pattern="%h %l %u %t "%r" %s %b"?/> ????????????</Host> ????????</Engine> ????</Service> </Server> |
Server節(jié)點(diǎn):
Server節(jié)點(diǎn)表示整個Tomcat Servlet容器,此節(jié)點(diǎn)是Server.xml的根節(jié)點(diǎn),用于描述整個Tomcat Servlet容器的特點(diǎn)。屬性描述:| className | 否 | tomcat標(biāo)準(zhǔn)實(shí)現(xiàn) | 指定Server實(shí)現(xiàn)java類的全限定名,此類必須實(shí)現(xiàn)org.apache.catalina.Server接口。tomcat標(biāo)準(zhǔn)實(shí)現(xiàn):org.apache.catalina.core.StandardServer |
| address | 否 | localhost | 指定連接端口的IP地址。 |
| port | 是 | 8005 | 指定關(guān)閉tomcat的監(jiān)聽端口,該端口不能被其他進(jìn)程所占用。關(guān)閉該端口,可以設(shè)置為“-1”,則不能通過shutdown.sh/shutdiwn.bat的方式停止tomcat。? |
| shutdown | 是 | SHUTDOWN | 指定關(guān)閉tomcat的關(guān)閉命令,嚴(yán)格區(qū)分大小寫。 |
Listener節(jié)點(diǎn):
用于處理Tomcat Server啟動或停止時特定的一些動作處理。Listener節(jié)點(diǎn)可以作為Server、Engine、Context、Host子節(jié)點(diǎn)存在,作用在子節(jié)點(diǎn)時相關(guān)的約束在將限制在子節(jié)點(diǎn)內(nèi)。以下列舉tomcat自帶的幾個Listener進(jìn)行說明。
- org.apache.catalina.startup.VersionLoggerListener
說明:作用是Tomcat Server在啟動時輸出的基本信息,信息包含Tomcat Server、Java、System,在catalina.out中會看到。此Listener只能用在Server節(jié)點(diǎn)下,并且放在Listener的首個。屬性描述:
| logArgs | 否 | true | 如果設(shè)定為true,將會在日志中輸出啟動腳本中的參數(shù)。 |
| logEnv | 否 | false | 如果設(shè)定為true,將會在日志中輸出當(dāng)前的環(huán)境變量。 |
- org.apache.catalina.core.AprLifecycleListener
說明:Tomcat Server在啟動過程中檢測APR的本地庫和加載庫是否存在。此Listener只能用在Server節(jié)點(diǎn)下。屬性描述:
| SSLEngine | 否 | on | on:開啟SSL,將使用本地的SSL Engine off:不使用SSL |
| SSLRandomSeed | 否 | builtin | ? |
| FIPSMode | 否 | off | FIPSMode依賴于用戶自己建立的OpenSSL庫,如果取值不是off,必須要保證SSLEngine已經(jīng)正常啟動。 on:需要設(shè)置OpenSSL設(shè)置為FIPS模式 enter:強(qiáng)制設(shè)置OpenSSL使用FIPS模式,如果OpenSSL已經(jīng)是FIPS模式,將會發(fā)生錯誤。 require:需要設(shè)置OpenSSL為FIPS模式,如果OpenSSL不是FIPS模式,將會發(fā)生錯誤。 off:? |
- org.apache.catalina.core.JasperListener
說明:Tomcat Server在加載所有Web Application之前必須要先對JSP的引擎通過此Listener進(jìn)行初始化。此Listener只能用在Server節(jié)點(diǎn)下。
- org.apache.catalina.core.JreMemoryLeakPreventionListener
說明:會隨著Tomcat Server啟動對類加載器監(jiān)控是否發(fā)生內(nèi)存泄露的狀況。
| appContextProtection | 否 | true <= jdk1.6 false >= jdk1.7 | 保護(hù)應(yīng)用程序不會發(fā)生內(nèi)存泄露,但這將會導(dǎo)致應(yīng)用程序中的部分內(nèi)容停止運(yùn)行。 |
| AWTThreadProtection | 否 | false | ? |
| classesToInitialize | 否 | ? | ? |
| driverManagerProtection | 否 | ? | ? |
| gcDaemonProtection | 否 | ? | ? |
| java2DDisposerProtection | 否 | ? | ? |
| ldapPoolProtection | 否 | ? | ? |
| securityLoginConfigurationProtection | 否 | ? | ? |
| securityPolicyProtection | 否 | ? | ? |
| tokenPollerProtection | 否 | ? | ? |
| urlCacheProtection | 否 | ? | ? |
| xmlParsingProtection | 否 | ? | ? |
- org.apache.catalina.mbeans.GlobalResourcesLifecycleListener
說明:配置Tomcat Server在啟動過程中可以識別GlobalNamingResources里面配置的數(shù)據(jù)源。此LISTENER只能作用在Server節(jié)點(diǎn)下。
- org.apache.catalina.core.ThreadLocalLeakPreventionListener
說明:
GlobalNamingResources節(jié)點(diǎn):
用于配置Tomcat Server全局的JNDI數(shù)據(jù)源。
Environment節(jié)點(diǎn):
用戶配置Tomcat Server全局的變量。
| description | 否 | 無 | 環(huán)境變量的描述說明 |
| name | 是 | 無 | 環(huán)境變量的名稱, |
| override | 否 | true | 是否允許被同名的環(huán)境變量所覆蓋。 |
| type | 是 | 無 | 環(huán)境變量數(shù)據(jù)的類型,類的全限定名。 |
| value | 是 | 無 | 環(huán)境變量的取值 |
Resource節(jié)點(diǎn):
配置JNDI數(shù)據(jù)源。
| auth | 否 | 無 | ? Application: Container: |
| closeMethod | 否 | 無 | 在單例資源的情況下,當(dāng)資源不再被使用時將會觸發(fā)closeMethod進(jìn)行資源釋放。非單例資源的情況下,此參數(shù)將被忽略。 |
| description | 否 | 無 | JNDI資源的描述。 |
| name | 是 | 無 | JNDI資源的名稱。 |
| scope | 否 | Shareable | ? Shareable: Unshareable: |
| singleton | 否 | true | 此資源是否為單例類型。如果為true,每次通過JNDI查找到的結(jié)果將會是同一個實(shí)例,如果為false每次返回的將是不同的實(shí)例。如果是javax.sql.DataSource類型的資源,此處必須使用true。 |
| type | 是 | 無 | Web應(yīng)用程序中,通過JNDI查找此資源時使用的JavaClass的全限定名。 |
ResourceLink節(jié)點(diǎn):
將一個全局的JNDI資源引入到一個WEB項(xiàng)目中。
Transaction節(jié)點(diǎn):
?
Service節(jié)點(diǎn):
Service節(jié)點(diǎn)由至少一個Connector和一個Engine節(jié)點(diǎn)組成,用來處理Connector節(jié)點(diǎn)上接收到的請求。可以由多個Service節(jié)點(diǎn)在Server節(jié)點(diǎn)內(nèi)。
| className | 否 | tomcat的標(biāo)準(zhǔn)實(shí)現(xiàn) org.apache.catalina.core.StandardService | service的實(shí)現(xiàn)類的全限定名,必須實(shí)現(xiàn)org.apache.catalina.Service接口。如果該屬性沒有特殊指定,將會使用tomcat標(biāo)準(zhǔn)實(shí)現(xiàn)。 |
| name | 是 | 無 | service的名稱,在tomcat標(biāo)準(zhǔn)實(shí)現(xiàn)中會在日志中輸出。如果配置多個service節(jié)點(diǎn),此名稱要保證唯一性。· |
Executor節(jié)點(diǎn):
可以建立統(tǒng)一公共的線程池,供多個Connector使用。
| className | 否 | tomcat標(biāo)準(zhǔn)實(shí)現(xiàn) org.apache.catalina.core.StandardThreadExecutor | 創(chuàng)建Executor線程池Java類的全限定名,此類必須要實(shí)現(xiàn)org.apache.catalina.Executor接口。 |
| name | 是 | 無 | 線程池的引用名稱,此名稱必須是唯一的。 |
使用Tomcat標(biāo)準(zhǔn)實(shí)現(xiàn)(org.apache.catalina.core.StandardThreadExecutor)的其他屬性
| threadPriority | 否 | 5 | 描述當(dāng)前線程的優(yōu)先級。 |
| daemon | 否 | true | 描述是否為守護(hù)線程。 |
| namePrefix | 否 | ? | 線程名稱前綴。線程名稱命名規(guī)則:namePrefix+threadNumber |
| maxThreads | 否 | 200 | 線程池中最大的活動線程數(shù)。 |
| minSpareThreads | 否 | 25 | 線程池中最下的空閑線程數(shù)。 |
| maxIdleTime | 否 | 60000毫秒 | 線程空閑時常,當(dāng)線程中中線程超過minSpareThreads的數(shù)量,且空閑時長達(dá)到maxIdleTime后,線程池將會銷毀此線程。 |
| maxQueueSize | 否 | Integer.MAX_VALUE | 當(dāng)線程池中沒有空閑處理線程,請求將會暫存在此隊(duì)列中,等待空閑線程處理。 |
| prestartminSpareThreads | 否 | falser | tomcat啟動后是否按照minSpareThreads指定的數(shù)量創(chuàng)建最小線程數(shù)。 |
| threadRenewalDelay | 否 | 1000 | ? |
Connector節(jié)點(diǎn):
Tomcat Server提供了2個類別的Connector的不同實(shí)現(xiàn),分別是Http Connector和AJP Connector,下面將針對兩種Connector進(jìn)行分別說明。
Http Connector
HTTP Connector代表了支持HTTP/1.1協(xié)議的Connector組件,使Tomcat Server成為一個能夠執(zhí)行servlet和JSP頁面的獨(dú)立的Web服務(wù)器。一個HTTP Connector組件的實(shí)例監(jiān)聽服務(wù)器上一個特定的TCP端口號上的連接。一個或多個這樣的連接器可以配置成一個單一Service的一部分,每個轉(zhuǎn)發(fā)到相關(guān)聯(lián)的Engine 處理請求,并創(chuàng)建響應(yīng)。如果你要配置的Connector,用于連接到Web服務(wù)器(Apache Web Server)使用的的AJP協(xié)議。
通用配置屬性:
| allowTrace | ? | false | 指定是否開啟TRACE HTTP method。 |
| asyncTimeout | ? | 10000 | 異步請求的超時時間設(shè)置,單位:毫秒。 |
| enableLookups | ? | false | 主要是對request.getRemoteHost()方法產(chǎn)生影響,是否通過DNS查找主機(jī)名。 true:通過DNS查找該地址的主機(jī)名。 false:直接返回發(fā)起請求的主機(jī)IP地址。 |
| maxHeaderCount | ? | 100 | 限定一個請求頭中允許攜帶header的數(shù)量,超過該數(shù)量的請求將會被拒絕。如果設(shè)定為負(fù)數(shù),表示不限制。 |
| maxParameterCount | ? | 10000 | 限制GET加POST請求發(fā)送參數(shù)的數(shù)量,超過該數(shù)量的請求參數(shù)將會被丟棄。如果設(shè)定為負(fù)數(shù),表示不限制。 |
| maxPostSize | ? | 2097152 | 限制在POST時,可以通過URL傳遞參數(shù)的數(shù)據(jù)量。單位:字節(jié)。 |
| maxSavePostSize? | ? | 4096 | 將被容器在FORM或CLIENT-CERT認(rèn)證中保存/緩沖的POST的最大尺寸。單位:字節(jié)。 |
| parseBodyMethods | ? | post | 以逗號分隔的HTTP方法列表,通過方法列表,等同于POST方法,request 正文將被解析成請求參數(shù)。在這里為了符合HTTP規(guī)范明確禁止HTTP方法TRACE。 |
| port | 是 | 無 | 啟動監(jiān)聽的端口號。如果設(shè)置為0,Tomcat將會隨機(jī)產(chǎn)生一個空閑的端口提供服務(wù)。 |
| protocol | ? | HTTP/1.1 | Tomcat Server處理請求的方式 org.apache.coyote.http11.Http11Protocol:阻塞的Java連接器(bio)。 org.apache.coyote.http11.Http11NioProtocol:非阻塞的Java連接器(nio)。 org.apache.coyote.http11.Http11AprProtocol:APR/Native連接器(apr)。 |
| proxyName | ? | 無 | ? |
| proxyPort | ? | 無 | ? |
| redirectPort | ? | 無 | 如果該Connector支持SSL請求,并且該請求是SSL請求,Tomcat Server會將該請求轉(zhuǎn)向到此處指定的端口號。 |
| scheme | ? | HTTP | 設(shè)定request.getScheme()獲取到的協(xié)議名稱。 |
| secure | ? | false | ? |
| URIEncoding | ? | ISO-8859-1 | 指定URI字符集編碼。 |
| useBodyEncodingForURI | ? | false | 是否使用URI字符集編碼對queryString進(jìn)行轉(zhuǎn)碼。 |
| useIPVHosts | ? | false | ? |
| xpoweredBy | ? | false | ? |
tomcat標(biāo)準(zhǔn)實(shí)現(xiàn)配置屬性:
| acceptCount | 否 | 100 | 當(dāng)沒有空閑工作線程來處理請求時,請求將會進(jìn)行暫存排隊(duì)。允許最大的排隊(duì)數(shù)量,超出改數(shù)量后,服務(wù)器將會拒絕請求。 |
| acceptorThreadCount | 否 | 1 | 用于接受連接的線程數(shù)量。在一個多CPU的機(jī)器上可以增加該值。 |
| acceptorThreadPriority | 否 | 5 | 接受連接線程的優(yōu)先級。 |
| address | 否 | * | 監(jiān)聽端口綁定的IP地址。默認(rèn)情況是綁定所有IP地址。 |
| bindOnInit | 否 | true | ? |
| compressableMimeType | 否 | text/html,text/xml,text/plain | 可用于壓縮的MIME類型列表,多個取值的時候,使用英文半角逗號分隔。 |
| compression | 否 | off | 是否開啟HTTP/1.1的GZIP壓縮協(xié)議。on:允許壓縮,將對文本類型進(jìn)行壓縮;force:強(qiáng)制壓縮,將對所有類型進(jìn)行壓縮。 |
| compressionMinSize | 否 | 2048 | 在compression為on的情況下,指定壓縮后輸出的最小值 |
| connectionLinger | 否 | -1 | socket連接空閑時長,單位:秒。-1表示關(guān)閉socket空閑時長。 |
| connectionTimeout | 否 | 60000 | 請求連接的超時時長,單位:毫秒。-1:沒有限制。 |
| connectionUploadTimeout | 否 | ? | 上傳數(shù)據(jù)過程中的超時時長設(shè)置,單位:毫秒。此屬性只有在disableUploadTimeout=false的情況下有效。 |
| disableUploadTimeout | 否 | true | 是否限制上傳數(shù)據(jù)過程中的超時時長。取值為false時,需要設(shè)置connectionUploadTimeout的取值。 |
| executor | 否 | ? | 指定引用的executor。如果被指定,此節(jié)點(diǎn)上所有相關(guān)線程的設(shè)置都將被忽略,而直接使用被指定executor線程池提供的線程。 |
| executorTerminationTimeoutMillis | 否 | ? | ? |
| keepAliveTimeout | 否 | ? | 連接器在關(guān)閉之前,將等待HTTP請求的毫秒數(shù),默認(rèn)使用connectionTimeout的取值。-1標(biāo)識沒有限制。 |
| maxConnections | 否 | ? | 連接器在同一時刻所能接受的最大連接數(shù)。達(dá)到此值后連接器不再接受任何連接。BIO默認(rèn)使用的是maxThread取值;NIO默認(rèn)取值是10000;APR的默認(rèn)取值是8192。-1標(biāo)識不限制最大連接數(shù)。 |
| maxExtensionSize | 否 | ? | ? |
| maxHttpHeaderSize | 否 | 8388608 | Http包中頭信息的大小,單位:字節(jié)。默認(rèn)是8192KB。 |
| maxKeepAliveRequests | 否 | 100 | 一個連接中允許最大處理請求的個數(shù)。1:將會禁用長連接;-1:表示不限制; |
| maxSwallowSize | 否 | ? | ? |
| maxThreads | 否 | 200 | 用于處理請求的最大線程數(shù)。 |
| maxTrailerSize | 否 | 8192 | ? |
| minSpareThreads | 否 | 10 | 最小空閑線程數(shù)。 |
| noCompressionUserAgents | 否 | ? | ? |
| processorCache | 否 | 200 | 可以緩存的processor對象個數(shù)。-1:沒有限制。 |
| restrictedUserAgents | 否 | ? | ? |
| server | 否 | Apache-Coyote/1.1 | Http響應(yīng)頭中Servet字段的取值信息。 |
| socketBuffer | 否 | 9000 | 套接字緩沖區(qū)大小,單位:字節(jié)。-1:沒有緩沖區(qū)。 |
| SSLEnabled | 否 | false | 此連接器是否使用SSL連接器傳輸數(shù)據(jù)。 |
| tcpNoDelay | 否 | true | 如果設(shè)置為true,TCP_NO_DELAY選項(xiàng)將被設(shè)置在服務(wù)器上的套接字上,在大多數(shù)情況下,這樣可以提高性能。 |
| threadPriority | 否 | 5 | 線程優(yōu)先級。 |
| upgradeAsyncWriteBufferSize | 否 | ? | ? |
TCP Socket連接屬性配置,在BIO和NIO模式下支持配置:
| socket.rxBufSize | 否 | JVM設(shè)置 | Socket接收緩沖區(qū)(SO_RCVBUF),以字節(jié)為單位。 |
| socket.txBufSize | 否 | JVM設(shè)置 | Socket發(fā)送緩沖區(qū)(SO_SNDBUF),以字節(jié)為單位。 |
| socket.tcpNoDelay | 否 | JVM設(shè)置 | 相當(dāng)于Socket的標(biāo)準(zhǔn)屬性tcpNoDelay,boolean類型取值 |
| socket.soKeepAlive | 否 | JVM設(shè)置 | Socket長連接設(shè)置(SO_KEEPALIVE),取值:boolean類型 |
| socket.ooBInline | 否 | JVM設(shè)置 | Socket OOBINLINE設(shè)置,取值:boolean類型 |
| socket.soReuseAddress | 否 | JVM設(shè)置 | Socket復(fù)用連接地址(SORESUEADDR),取值:boolean類型 |
| socket.soLingerOn | 否 | JVM設(shè)置 | Socket延時關(guān)閉選項(xiàng),標(biāo)準(zhǔn)屬性中connectionLinger>=0時,此值為true,connectionLinger<0時,此值為false。取值為true時,必須設(shè)置socket.soLingerTime,否則將使用JVM設(shè)置。取值:boolean類型 |
| socket.soLingerTime | 否 | JVM設(shè)置 | Socket延時關(guān)閉時長(SO_LINGER),單位:秒。 |
| socket.soTimeout | 否 | ? | 相當(dāng)于標(biāo)準(zhǔn)屬性中的connectionTimeout |
| socket.performanceConnectionTime | 否 | JVM設(shè)置 | 性能設(shè)置的第一個值,這三個值必須同時設(shè)置。 |
| socket.performanceLatency | 否 | JVM設(shè)置 | 性能設(shè)置的第二個值,這三個值必須同時設(shè)置。 |
| socket.performanceBandwidth | 否 | JVM設(shè)置 | 性能設(shè)置的第三個值,這三個值必須同時設(shè)置。 |
| socket.unlockTimeout | 否 | 250 | Socket解鎖的超時時間,單位:毫秒。 |
BIO的特殊配置項(xiàng)
| disableKeepAlivePercentage | 否 | 75 | 長連接失效之前被使用的處理線程的百分比,取值:0=<num<=100 |
NIO的特殊配置
| pollerThreadCount | 否 | 1 | 處理輪詢事件的線程數(shù)量,在版本7.0.27及以前版本,默認(rèn)值是每個處理器1個。版本7.0.28的默認(rèn)值是每個處理器1個,但不超過2個。 |
| pollerThreadPriority | 否 | 5 | 輪詢線程的優(yōu)先級。 |
| selectorTimeout | 否 | 1000 | 選擇輪詢器的超時時間。單位:毫秒。 |
| useComet | 否 | true | 是否允許comet servlet。comet是基于http的長連接技術(shù)。 |
| useSendfile | 否 | true | 是否允許send file。 |
| socket.directBuffer | 否 | false | 直接使用ByteBuffers或java映射的ByteBuffers。當(dāng)使用direct ByteBuffers,請確保你分配適當(dāng)?shù)膬?nèi)存量給直接內(nèi)存空間。JDK配置如-XX:MaxDirectMemorySize=256M。 |
| socket.appReadBufSize | 否 | 8192 | 在Tomcat中每個連接的開辟連接一個讀ByteBuffer。此屬性控制這個緩沖區(qū)的大小。單位:字節(jié)。對于較低的并發(fā),可以增加這個值以緩沖更多的數(shù)據(jù)。對于長連接數(shù)很多的情況,需要降低這個數(shù)值或者增加堆大小。 |
| socket.appWriteBufSize | 否 | 8192 | 在Tomcat中每個連接的開辟連接一個寫B(tài)yteBuffer。此屬性控制這個緩沖區(qū)的大小。單位:字節(jié)。對于較低的并發(fā),你可以增加這個值以緩沖更多的響應(yīng)數(shù)據(jù)。對于長連接數(shù)很多的情況,你需要降低這個數(shù)值或者增加堆大小。 |
| socket.bufferPool | 否 | 500 | NIO連接器使用NioChannel這個類來持有鏈接到一個套接字的元素。為了減少垃圾收集,NIO連接器緩存這些通道的對象。此值指定這個緩存的大小。默認(rèn)值是500,表示緩存將持有500個?NioChannel的對象。-1表示不限制緩存大小,0表示不緩存。 |
| socket.bufferPoolSize | 否 | 1024*1024*100 | NioChannel池是基于尺寸大小,而不是基于對象數(shù)的。NioChannel的緩沖區(qū)大小=讀取緩沖區(qū)大小+寫入緩沖區(qū)大小;SecureNioChannel的緩沖區(qū)大小=應(yīng)用程序讀取緩沖區(qū)大小+應(yīng)用程序?qū)懭刖彌_區(qū)的大小+網(wǎng)絡(luò)讀取緩沖區(qū)大小+網(wǎng)絡(luò)寫入緩沖區(qū)的大小。單位:字節(jié)。 |
| socket.processorCache | 否 | 500 | Tomcat緩存SocketProcessor對象的最大值。默認(rèn)值是500。-1表示不限制緩存大小,0表示不緩存。 |
| socket.keyCache | 否 | 500 | Tomcat緩存KeyAttachment對象的最大值。默認(rèn)值是500。-1表示不限制緩存大小,0表示不緩存。 |
| socket.eventCache | 否 | 500 | Tomcat緩存PollerEvent對象的最大值。默認(rèn)值是500。-1表示不限制緩存大小,0表示不緩存。 |
| selectorPool.maxSelectors | 否 | 200 | 以減少選擇器的爭用,在池中使用的選擇器最大個數(shù)。命令行值org.apache.tomcat.util.net.NioSelectorShared設(shè)置為false時,使用此選項(xiàng)。 |
| selectorPool.maxSpareSelectors | 否 | -1 | 以減少選擇器的爭用,在池中使用的最大備用選擇器個數(shù)。當(dāng)選擇器返回到池中時,系統(tǒng)可以決定保留它或者讓他垃圾回收。當(dāng)org.apache.tomcat.util.net.NioSelectorShared?值設(shè)置為false時,使用此選項(xiàng)。默認(rèn)值是-1(無限制) |
| command-line-options | 否 | ? | 可用于NIO連接器的命令行選項(xiàng)。如果你想每個線程使用一個選擇器,將此值設(shè)置為false。當(dāng)你將它設(shè)置為false,你可以通過使用selectorPool.maxSelectors屬性控制選擇器池的大小。 |
| oomParachute | 否 | 1024*1024*1 | NIO連接器實(shí)現(xiàn)了一個名叫parachute的OutOfMemoryError錯誤的策略。它擁有一個塊的數(shù)據(jù)作為一個字節(jié)數(shù)組。在一個OOM的情況下,這個數(shù)據(jù)塊被釋放,并報(bào)告錯誤。單位:字節(jié)。 |
APR的特殊配置
| deferAccept | 否 | ? | Socket連接上設(shè)置TCP_DEFER_ACCEPT標(biāo)志。操作系統(tǒng)支持TCP_DEFER_ACCEPT時為true,否則為false |
| pollerSize | 否 | 8192 | 在一個給定的時間內(nèi),負(fù)責(zé)長連接輪詢的輪詢器能夠持有的線程數(shù)。額外的連接將被馬上關(guān)閉。默認(rèn)值是8192,與8192個長連接數(shù)一致。 |
| pollTime | 否 | ?1000*1000 | 輪詢調(diào)用持續(xù)的時間(以微秒為單位)。在某些情況下,降低該值將略微減少潛在的連接數(shù),但隨著增加的輪詢調(diào)用會使用更多的CPU。默認(rèn)值是2000(毫秒)。 |
| sendfileSize | 否 | 1024 | |
| threadPriority | 否 | 5 | 接收器和輪詢器線程的優(yōu)先級。 |
| useComet | 否 | true | 允許或禁止Comet servlet |
| useSendfile | 否 | true | 使用此屬性來啟用或禁用sendfile的能力 |
AJP Connector
AJP Connector主要使用在通過Web服務(wù)于tomcat連接時使用的一種協(xié)議,比如通過apache或iis。目前使用此場景較少,當(dāng)前越來越多的情況下在使用nginx的WEB服務(wù)器作為連接中轉(zhuǎn)。此處不再進(jìn)行詳細(xì)說明。
Engine節(jié)點(diǎn):
是一個Servlet容器,可以包含該多個虛擬主機(jī)(通過Host實(shí)現(xiàn))。主要就是將用戶請求分配給每一個虛擬主機(jī)進(jìn)行處理,完成后再將結(jié)果返回給Connector。
| backgroundProcessorDelay | false | 10 | backgroundProcessor方法指定的間隔時長。取值小于0時將不再執(zhí)行此方法。法主要用于重新加載 Web 應(yīng)用程序的類文件、資源和掃描 Session 過期。 |
| className | false | tomcat標(biāo)準(zhǔn)實(shí)現(xiàn) | Engine實(shí)現(xiàn)類的全限定名。如果使用自定義實(shí)現(xiàn),此類必須要實(shí)現(xiàn)org.apache.catalina.Engine接口。 |
| defaultHost | true | ? | 指定默認(rèn)的Host,取值必須是已經(jīng)存在的Host節(jié)點(diǎn)的name。 |
| jvmRoute | false | ? | 在負(fù)載均衡時使用到的標(biāo)識符,保證取值必須是集群中唯一性。 |
| name | true | ? | Engine的邏輯名稱,在輸出日志和錯誤信息時會使用此名稱。 |
| startStopThreads | false | 1 | 啟動和停止Host線程數(shù)。 0:使用Runtime.getRuntime().availableProcessors()返回值。 1:使用1個線程。 >1:使用Runtime.getRuntime().availableProcessors()+num個線程。 |
Host節(jié)點(diǎn):
虛擬主機(jī)配置
| appBase | 是 | webapps | 聲明應(yīng)用程序存放路徑,可以是相對路徑,也可以是絕對路徑。相對路徑是$CATALINA_HOME。 |
| xmlBase | 否 | conf/<engine_name>/<host_name> | 指定當(dāng)前Host節(jié)點(diǎn)子節(jié)點(diǎn)單獨(dú)配置路徑,可以是相對路徑,也可以是絕對路徑。相對路徑是$CATALINA_HOME。 |
| createDirs | 否 | true | 啟動時是否創(chuàng)建appBase和xmlBase路徑,如果設(shè)置為true,當(dāng)路徑創(chuàng)建失敗時,會在日志中進(jìn)行記錄,但不影響啟動。 |
| autoDeploy | 否 | true | 是否自動部署。當(dāng)設(shè)置為true,tomcat會監(jiān)控appBase和xmlBase路徑下文件的變化,發(fā)生變化后會重新加載所在的應(yīng)用程序。 |
| backgroundProcessorDelay | 否 | ? | 同Engine節(jié)點(diǎn)。如果沒有設(shè)置取值,也將會使用Engine中的取值。 |
| className | 否 | tomcat標(biāo)準(zhǔn)實(shí)現(xiàn) | Host實(shí)現(xiàn)類的全限定名。使用自定義類時,此類必須要實(shí)現(xiàn)org.apache.catalina.Host接口。 |
| deployIgnore | 否 | ? | 使用表達(dá)式的方式指定在deploy時忽略的內(nèi)容。在autoDeploy和deployOnStartup設(shè)置為true時生效。如:“.svn”、“*.bak”。 |
| deployOnStartup | 否 | true | 如果設(shè)置為true,tomcat啟動時將會自動加載應(yīng)用程序。 |
| failCtxIfServletStartFails | 否 | false | 如果設(shè)置為true,Context中應(yīng)用程序中l(wèi)oad-on-startup>=0的Servlet如果啟動發(fā)生錯誤,將會導(dǎo)致所在的Context加載失敗。 |
| name | 是 | ? | 當(dāng)多個Host存在時,必須要保證唯一性。 |
| startStopThreads | 否 | 1 | 同Engine節(jié)點(diǎn)。 |
| undeployOldVersions | 否 | false | ? |
總結(jié)
以上是生活随笔為你收集整理的Apache-tomcat的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 完整的POM文档内容
- 下一篇: 解决idea 控制台中文乱码