Tomcat 配置文件server.xml 3個端口的作用


tomcat中server.xml配置文件中幾個port的作用和區別

在tomcat的server.xml中有這么幾個port,很多人雖然一直在使用tomcat,但是卻不知道這幾個port各有什么作用

1
2
3
1 <Server port= "8005" shutdown= "SHUTDOWN" >
  2 .<Connector connectionTimeout= "20000" port= "8080" protocol= "HTTP/1.1" redirectPort= "8443" useBodyEncodingForURI= "true" />
  3 .<Connector port= "8009" protocol= "AJP/1.3" redirectPort= "8443" />

1、<Server port="8005" shutdown="SHUTDOWN">是tomcat 監聽的關閉端口。

2、<Connector connectionTimeout="20000" port="8080"

 protocol="HTTP/1.1" redirectPort="8443"       useBodyEncodingForURI="true"/>

   protocol: http協議;connectionTimeout: 連接超時時間;

   port:監聽瀏覽器發送請求,該端口設置為80后在訪問的時候就可以省略端口(http://localhost);

   redirectPort:重定向端口,當用戶用http請求某個資源,而該資源本身又被設置了必須要https方式訪問,

     此時Tomcat會自動重 定向到這個redirectPort設置的https端口,即處理https請求的端口。

3、<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

   這個是接受其他服務轉發過來的請求。

============================華麗的分割線=====================================

1. port 

    tomcat作為一個網絡server端,它需要暴露一個socket端口來accept客戶端的鏈接,可以通過port指定.

2. protocol

    使用的網絡協議,表示tomcat使用何種方式來接受和處理client端請求,"HTTP/1.1"是默認值,等效於"org.apache.coyote.http11.Http11Protocol";還有熟悉的"AJP/1.3";關於HTTP和AJP兩種方式的區別和性能優劣可以參見其他文檔。【文檔

    在Tomcat 6.0之后,還提供了NIO的方式,可以有效的提升性能,特別是在大量長連接/數據上傳+下載等web應用中.此時portocal="org.apache.coyote.http11.Http11NioProtocol".

    tomcat目前支持:BIO、NIO、NIO2、APR四種IO模型,默認為BIO。對於互聯網應用,我們應該在NIO、NIO2之間做選擇,因為它能夠有效的提升性能(主要是並發能力),其中NIO2即為AIO,需要JDK 1.7+、Linux 2.6+才能支持。

    BIO:JDK 1.5+,tomcat 5.x+

    NIO:JDK 1.6+,tomcat 6.x+

    NIO2:JDK 1.7+,tomcat 7.x+

    為了保守起見,我們暫且基於NIO模式。

3. connectionTimeout

    當client與tomcat建立連接之后,在"connectionTimeout"時間之內,仍然沒有得到client的請求數據,此時連接將會被斷開.此值的設定需要考慮到網絡穩定型,同時也有性能的考慮.它和tcp的配置選項中的"socket_timeout"仍有區別,connectionTimeout只會在鏈接建立之后,得到client發送http-request信息前有效.

    默認值為60000,即60秒;對於互聯網應用,此值我們應該設置合理,比如20000。

4. maxHeaderCount

    http請求中header的最大個數,默認為100,"-1"表示不限制,通常不會關注此屬性,不過在一些設計"扭曲"的web應用中,使用header傳遞大量參數(:post)和校驗信息時,可能需要調整此值.如果請求中的header個數超過此限定值,請求將會被拒絕.(避免惡性攻擊,建議此值設置為符合application的實際需要)

5. maxParameterCount

    http-get請求中允許傳遞的查詢字符串的最大個數,盡管各種http瀏覽器(proxy工具)都會對http-get請求的長度和查詢字符串的個數有限制,你仍然可以通過tomcat再次設定合適的值.parameter個數越多,事實上對tomcat的內存開支更大,很多時候處於安全或者實用的角度考慮,maxParameterCount的值都不會太大.默認值為10000,"-1"表示無限制.如果請求中參數的個數超過限定值,請求將會被拒絕.(為了避免惡性攻擊,請根據application實際需要設定此值。)

    為了安全和規范,maxHeaderCount和maxParamterCount通常應該合理,建議設置為100等;如果請求參數再多,那么就建議使用post body發送或者拆分請求。

6. maxPostSize

    http-post請求中數據(body)的最大尺寸,單位:byte,默認值為2M.這對一些表單提交(較多文本域)有影響.可以適度調整此值,大文件上傳一般會在client拆分成小文件,而不是直接發送.

7. URIEncoding

    http-get請求中,使用何種字符集對查詢字符串進行編碼,默認為"iso-8859-1".

8. useBodyEncodingForURI

    是否使用"Content-type"中指定的編碼方式對http-get請求中查詢字符串進行編碼.如果為"true",將會忽略"URIEncoding"配置項,轉而使用header中"content-Type"指定的編碼方式.

9. maxThreads

    用於接收和處理client端請求的最大線程數,tomcat底層將采取線程池的方式來處理客戶端請求,此參數標識這線程池的尺寸.maxThreads意味着tomcat能夠並發執行request的個數.此值默認為200.一般情況下,在production環境中(根據物理機器配置,或者虛擬機的限制來做參考值),通常會有微調.較大的值並不能提升tomcat的負載能力,事實上"200"個線程數,已經足夠大了.本人的線上環境為maxThreads=120.

    對於NIO模式下,maxThreads參數應該由CPU核心數決定,樂觀起見,此值為:cpu核數 * 2。太大的值,並不能提升NIO性能,反而會使性能下降,因為線程切換(CS)將會占據CPU的大量時間。

10. compression

    是否對http相應數據啟用Gzip壓縮,可選值為"off"或者"on";這是一個值得商榷的參數;如果開啟壓縮,意味着較少的網絡傳輸量,但是將消耗一定的CPU.如果你的應用有較高的CPU性能結余,且響應數據均是一些文本字符串,那么開啟壓縮,會有較大的收益.(並不是所有的瀏覽器都能夠合理的支持gzip壓縮,特別是低版本)

11. acceptCount

    當tomcat請求處理線程池中的所有線程都處於忙碌狀態時,此時新建的鏈接將會被放入到pending隊列,acceptCount即是此隊列的容量,如果隊列已滿,此后所有的建立鏈接的請求(accept),都將被拒絕。默認為100。在高並發/短鏈接較多的環境中,可以適當增大此值;當長鏈接較多的場景中,可以將此值設置為0.

    這個參數將會在創建ServerSocket時帶入,為TCP底層參數。如果請求均為短連接、請求耗時較短,我們可以適當增加此值。
12. address

    當物理server上綁定了多個IP地址時,可以通過“address”來指定tomcat-server需要bind的地址.默認將port關聯到所有的ip上。
13. bufferSize

    鏈接在讀取stream時,buffer數據的尺寸。(非socket buffer)
14. connectionLinger

    socket linger參數值。當socket即將關閉時(前)阻塞的時間,單位:秒。如果設置為-1,表示關閉linger。在BIO(Blocking IO)和AJP鏈接中默認為100,NIO中默認為25.
15. keepAliveTimeout

    當無實際數據交互時,鏈接被保持的時間,單位:毫秒。在未指定此屬性時,將使用connectionTimeout作為keepAliveTimeout。通常和“HTTP keepAlive”選項協調工作。對於HTTP請求,server端為了支撐較高的吞吐量,不可能無限制的keepAlive一個鏈接(在設計要求上,這個和TCP通訊有本質的區別),keepAliveTimeout超時后,將會導致鏈接關閉。如果此tomcat設計為“長鏈接”服務,可以適當增加keepAliveTimeout值,否則無需設置此值。

 

    不過我們通常在tomcat上層還有nginx等代理服務器,我們通常希望鏈接keepAlive的機制由代理服務器控制,比如nginx來決定鏈接是否需要“保持活性”(注意,與keep_alive不同),當然nginx服務器只會保留極少的長連接,幾乎所有的鏈接都會在使用結束后主動close;因為鏈接復用層,將有nginx與client保持,而不再是tomcat與client保持。太多的keepAlive鏈接,盡管提高了鏈接使用效率,但是對負載均衡不利。
16. maxKeepAliveRequests

    tomcat需要保持的最大請求數,即處於keepAlive狀態的請求的個數,建議此值為maxThreads * 0.5,不得大於maxThreads,否則將得不到預期的效果。-1表示不限制,1表示關閉keepAlive機制。

17、maxConnections

    tomcat允許接收和處理的最大鏈接數,對於BIO而言此值默認與maxThreads參數一樣,對於NIO而言此值默認為10000。對於tomcat已經接受和正在處理的線程數達到此值,server將允許繼續accept新鏈接但是不會處理它們,這些鏈接將會被阻塞直到連接數降低到此值(server將不會從這些socket中讀取數據,而是將它們的句柄buffer起來)。最終server是否可以繼續accept新的鏈接,取決於acceptCount值,因為此值是在創建ServerSocket時傳遞的參數,超過此值后,鏈接請求將會被拒絕。

   此值還受限於系統的ulimit、CPU、內存等配置。

18、acceptorThreadCount:默認為1,表示用於accept新鏈接的線程個數,如果在多核CPU架構下,此值可以設置為2,官方不建議設定超過2個的值。

19、maxHttpHeaderSize:http頭的最大尺寸,默認為8192,單位為“字節”。

20、minSpareThreads:線程池中,保持活躍的線程的最小數量,默認為10。

21、SSLEnabled:是否開啟ssl支持,默認為false;通常SSL應該在nginx等代理層,我們不應該讓tomcat直接接入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM