Tomcat9.x配置規范
1. Tomcat9.X使用
tomcat 有兩個版本,壓縮版與安裝版
壓縮版:簡單方便,官網下載下來后直接解壓后就可以使用了。啟動要通過命令去啟動。
安裝版:需安裝,安裝后會自動注冊為服務,可在服務中設置開機自啟動。
2. tomcat目錄結構
(1)bin:主要用來存放命令,.bat是windows下,.sh是Linux下
(2)conf:主要用來存放tomcat的一些配置文件
(3)lib:存放tomcat依賴的一些jar包
(4)logs:存放tomcat在運行時產生的日志文件
(5)temp:存放運行時產生的臨時文件
(6)webapps:存放應用程序
(7)work:存放tomcat運行時編譯后的文件,比如JSP編譯后的文件
3. tomcat三種部署方式
第一種:直接將 web 項目文復制到tomcat的webapps目錄中。
第二種:在本地tomcat的conf目錄中,新建Catalina/localhost目錄(這里要注意文件名的大小寫),然后在該目錄下新建一個xml文件,名字不可以隨意取,要和path后 的名字一致,我這里就應該是jstore.xml文件,它的具體內容為:
<Context docBase="C:\work\jstore\web" path="/jstore" reloadable="true"/>
第三種: 在tomcat中的conf目錄下的server.xml文件中,在<Host/>節點中添加一個context,具體為:
4. tomcat配置與優化
4.1. Connector連接器,主要負責Tomcat與客戶端的通訊, 在/conf/server.xml文件中
Connector默認配置,如圖
Connector參數配置與優化說明
4.2. Protocol線程協議配置:
HTTP/1.1:默認值,使用的協議與Tomcat版本有關。在Tomcat9中,默認自動選取使用NIO或APR(如果找到APR需要的本地庫,則使用APR,否則使用NIO)
org.apache.coyote.http11.Http11Protocol:BIO
org.apache.coyote.http11.Http11NioProtocol:NIO
org.apache.coyote.http11.Http11Nio2Protocol:NIO2
org.apache.coyote.http11.Http11AprProtocol:APR
大多數情況下性能比較,apr >nio>bio
配置方式,如圖
4.3. Connector線程池配置:
Executor的主要屬性包括:
name:該線程池的標記
maxThreads:線程池中最大活躍線程數,默認值200(Tomcat7和8都是)
minSpareThreads:線程池中保持的最小線程數,最小值是25
maxIdleTime:線程空閑的最大時間,當空閑超過該值時關閉線程(除非線程數小於minSpareThreads),單位是ms,默認值60000(1分鍾)
daemon:是否后台線程,默認值true
threadPriority:線程優先級,默認值5
namePrefix:線程名字的前綴,線程池中線程名字為:namePrefix+線程編號
4.4. jvm參數配置
Windows:
修改文件:bin/catalina.bat,設置參數(寫在第一行)
set JAVA_OPTS=-Xms2048m -Xmx2048m -Xss1024K -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m
查看Server Status
Linux:
修改bin/catalina.sh文件參數(寫在第一行)
JAVA_OPTS=-Xms2048m -Xmx2048m -Xss1024K -XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m
參數說明:
1、 file.encoding 默認文件編碼
2、 -Xmx1024m 設置JVM最大可用內存為1024MB
3、 -Xms1024m 設置JVM最小內存為1024m
4、 -XX:NewSize 設置年輕代大小
5、 XX:MaxNewSize 設置最大的年輕代大小
6、 -XX:PermSize 設置永久代大小
7、 -XX:MaxPermSize 設置最大永久代大小
8、 -XX:NewRatio=4:設置年輕代(包括Eden和兩個Survivor區)與終身代的比值(除去永久代)。設置為4,則年輕代與終身代所占比值為1:4,年輕代占整個堆棧的1/5
9、 -XX:+DisableExplicitGC這個將會忽略手動調用GC的代碼使得 System.gc()的調用就會變成一個空調用,完全不會觸發任何GC
4.5. Tomcat中web.xml配置
應用程序運行時最終會加載conf/web.xml和應用的web.xml的合集
每一個web應用最終是被發布到Tomcat的webappes目錄下,Tomcat是它們的運行環境。可以理解為Tomcat的web.xml文件是每一個web應用的web.xml的父文件,Tomcat將每個應用的公共配置提取出來放在conf目錄下的web.xml中,每個應用的個性配置放在自己的web.xml文件
1.指定歡迎頁面,在應用的web.xml中如果沒有對<welcome-file-list>進行覆蓋,那么默認主頁為index.html、index.html、index.jsp。
2.設置session的存活時間,默認為30分鍾
3. 設置過濾器,過濾所有資源
4.定義了WEB應用的名字
5. 返回特定HTTP狀態代碼時,或者特定類型的異常被拋出時,能夠制定將要顯示的頁面
6.配置servlet初始化參數
servlet 配置Servlet
servlet-name 定義Servlet的名字
servlet-class 指定實現這個servlet的類
init-param 定義Servlet的初始化參數和參數值,可有多個init-param
load-on-startup 指定當Web應用啟動時,裝載Servlet的次序,當值為正數或零時,Servlet容器先加載數值小的servlet,再依次加載其他數值大的servlet
4.6. Logs目錄默認日志文件
tomcat 有五類日志 :catalina、localhost、manager、admin、host-manager
1.catalina.out
即標准輸出和標准出錯,所有輸出到這兩個位置的都會進入catalina.out,這里包含tomcat運行自己輸出的日志以及應用里向console輸出的日志。默認這個日志文件是不會進行自動切割的,我們需要借助其他工具進行切割(注意:catalina.out文件如果過大會影響)
2. catalina.{yyyy-MM-dd}.log
這個主要是記錄tomcat啟動時候的信息,類似於我們在eclipse中啟動服務的時候在控制台看到的信息。在里面可以看到啟動的JVM參數以及操作系統等日志信息。如果沒有使用log4j等日志機制,系統的的錯誤信息與打印語句也在這個日志文件中記錄。(linux下所有的日志都在catalina.out中)
3.host-manager.日期.log
放tomcat的自帶的manager項目的日志信息的
4. localhost.{yyyy-MM-dd}.log
主要是應用初始化(listener, filter, servlet)未處理的異常最后被tomcat捕獲而輸出的日志,它也是包含tomcat的啟動和暫停時的運行日志,但它沒有catalina.2018-09-19.log 日志全。它只是記錄了部分日志
5.localhost_access_log.日期.txt
是存放訪問tomcat的請求的所有地址以及請求的路徑、時間,請求協議以及返回碼等信息(重要)
6.manager.YYYY-MM-DD.log
是tomcat manager項目專有的日志文件