tomcat基礎小結

目錄結構

bin:可執行文件,包含啓動腳本 conf:配置文件 lib:tomcat的依賴庫 logs:日誌 temp:臨時文件 webapp:默認的應用部署目錄 work:供web應用使用,tomcat的工作目錄,放置tomcat運行中產生的一些文件,如,跑jsp時,翻譯出來的servlet一般在這裏面。 LICENSE:許可證文件 NOTICE、RELEASE-NOTES、RUNNING.txt:

JVM啓動參數配置 環境變量JAVA_OPTS -server-Xms512m -Xmx521m 最小堆內存,最大堆內存,一般可以一樣大 如:

//在本發起有效
export JAVA_OPTS = "-server-Xms2048m -Xmx2048m"
//設置一直有效
cat ~/.bashrc

//啓動-運行bin目錄下的對應啓動腳本
./bin/startup.sh

配置文件

重要配置文件 server.xml 結構

Server 最頂層

Service 一個Server可配置多個Service

Connector 一個Service可以有多個Connector 用來接收用戶請求。

Engine 一個Service有一個Engine 用於處理Connect接收到的請求,包括平時寫的代碼也是由其執行。

Host 一個Engine可以有多個Host Host是虛擬主機的概念,即配置域名和ip。

Context 一個Host可有一個或多個Context。 一個Context即一個web應用。

對應組件的實現

Connector

1、Coyote組件,實現了許多不同的Connector 默認BIO Connector 使用傳統的 阻塞式的bio的操作的方式,實現方式也是傳統的java I/O的實現。 客戶端一個鏈接過來,服務端分配一個線程處理,若請求比較大,時間很久請求頭沒發完,對應的處理線程就只能一直等待。 2、Container 容器具體執行web應用代碼邏輯的部分。 具體實現:Catalina tomcat中實現容器的組件,最終都是由Catalina中的代碼執行的。

請求處理流程

java_tomcat_request01

參數配置

Connector

port address 監聽網絡請求時到哪個地址,一般會有多個ip,若不配置,會在所有地址上監聽。 protocol 協議,默認htpp1.1,調優可能會調整更高的。 connectionTimeout 多長時間不發請求則斷開,即連接超時時間 acceptCount 排隊隊列最大值。超過後,超出的會被拒絕處理,即不再處理後面的。 maxConnections 最大連接數。超過後值會接收但不處理。設置-1表示不設置連接數。 minSpareThreads 最小空閒線程數 maxThreads 最大線程數

Executor 線程池 事先創建一定數目的線程,當有任務時,從池中取出用完後再放回池中。 minSpareThreads 最小空閒線程數 maxThreads 最大線程數

當Connector同時配置依賴Executor和minSpareThreads/maxThreads,優先Executor。

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
			   executor="tomcatThreadPool"
               redirectPort="8443" />

Tomcat日誌

作用

Tomca運行情況獲知 調試利器

分類

系統運行日誌:運行信息與狀態 訪問日誌:記錄請求訪問 應用日誌:應用程序打印日誌 訪問日誌: 配置文件 server.xml

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

directory :日誌目錄 prefix:日誌名前綴 suffix:日誌名後綴 pattern:日誌格式

請求方式(get/post等):method: %m 客戶端ip:client ip:%a 請求時刻:time:%t 用戶響應碼: status:%s 服務端下發字節數: byteSent: %b User-Agent:%{User-Agent}i

日誌切割 fileDateFormat="yyyy-MM-dd." --時戳格式 rotatable = "true" --是否開啓日誌滾動

優化相關

Tomcat學習總結(3)——Tomcat優化詳細教程

閒談Tomcat性能優化 如何優化tomcat配置(從內存、併發、緩存4個方面)優化

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