Tomcat服務器是一個免費的開源web應用服務器,屬於輕量級應用服務器,在中小型系統和併發用戶不是不少的場合中被廣泛使用,是開發和測試JSP程序的首選。通常來講,Tomcat雖然和apache或者Nginx這些web服務器同樣,具備處理HTML頁面的功能,然而因爲其處理靜態頁面的能力遠不如apache或者Nginx,因此Tomcat通常是做爲一個servlet和JSP容器,單獨運行在後端。java
關於Tomcat的目錄及配置文件詳解可參考官網:https://tomcat.apache.org/node
1、部署Tomcat
準備工做:linux
• centos7.3服務器一臺
• 下載所需用到的軟件包:https://pan.baidu.com/s/1Meys8bsvBsdwVUYak9srKQ
• 提取碼:5bicweb
一、開始部署:shell
[root@tomcat /]# rpm -qa | grep jdk # 檢測rpm安裝的jdk環境 copy-jdk-configs-1.2-1.el7.noarch java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 # 將帶有headless的軟件包卸載掉 [root@tomcat /]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 # 將兩個版本都卸載 [root@tomcat /]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 [root@tomcat /]# mkdir tomcat [root@tomcat /]# cd tomcat/ [root@tomcat tomcat]# rz # xshell環境直接上傳所需軟件包 [root@tomcat tomcat]# ls apache-tomcat-8.5.35.tar.gz jdk-8u211-linux-x64.tar.gz tomcat 監控頁面.txt [root@tomcat tomcat]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/ # 將jdk軟件包解壓到指定目錄 [root@tomcat tomcat]# tar zxf apache-tomcat-8.5.35.tar.gz # 解壓Tomcat源碼包 [root@tomcat tomcat]# mv apache-tomcat-8.5.35 /usr/local/tomcat # 移動Tomcat至指定路徑並修改目錄名爲Tomcat [root@tomcat tomcat]# vim /etc/profile # 編輯環境變量,在文件末尾添加以下幾行 ............. // 省略部份內容 export JAVA_HOME=/usr/local/jdk1.8.0_211 export JRE_HOME=/usr/local/jdk1.8.0_211/jre export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH [root@tomcat tomcat]# . /etc/profile # 執行使之生效 [root@tomcat /]# java -version # 查看Java版本,確保已經安裝成功 java version "1.8.0_211" Java(TM) SE Runtime Environment (build 1.8.0_211-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode) [root@tomcat /]# /usr/local/tomcat/bin/startup.sh # 啓動Tomcat服務 Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/jdk1.8.0_211/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@tomcat /]# netstat -anput | grep 8080 # 查看端口是否正常監聽 tcp6 0 0 :::8080 :::* LISTEN 3712/java
可使用客戶端訪問Tomcat服務器IP+8080端口,能夠看到如下頁面:apache
2、定義Tomcat多實例
所謂多實例,就是在一臺服務器上運行多個Tomcat服務,因此,須要注意,在定義Tomcat的多實例時,千萬不要出現端口衝突的狀況編程
[root@tomcat local]# cp -r tomcat tomcat2 # 將Tomcat 複製一份 [root@tomcat local]# vim tomcat2/conf/server.xml # 編輯複製的Tomcat主配置文件 #配置文件的全部端口號,除了帶註釋的外,都須要修改, #只要配置項中帶有「port」的,而且後面是數字的,都是端口號 #可自行根據狀況進行更改 [root@tomcat local]# /usr/local/tomcat2/bin/startup.sh # 啓動複製版Tomcat Using CATALINA_BASE: /usr/local/tomcat2 Using CATALINA_HOME: /usr/local/tomcat2 Using CATALINA_TMPDIR: /usr/local/tomcat2/temp Using JRE_HOME: /usr/local/jdk1.8.0_211/jre Using CLASSPATH: /usr/local/tomcat2/bin/bootstrap.jar:/usr/local/tomcat2/bin/tomcat-juli.jar Tomcat started. [root@tomcat local]# netstat -anput | grep 8081 # 看到已經開始監聽 tcp6 0 0 :::8081 :::* LISTEN 3936/java
可使用客戶端訪問Tomcat服務器IP+8081端口,能夠看到如下頁面(因爲是徹底複製以前的Tomcat目錄,因此看到的頁面同樣):
3、配置Tomcat自定義目錄bootstrap
[root@tomcat /]# mkdir -p /data/project # 建立自定義網站根目錄 [root@tomcat /]# echo aaa > /data/project/index1.jsp # 編輯兩個測試網頁 [root@tomcat /]# echo bbb > /data/project/index2.jsp [root@tomcat /]# vim /usr/local/tomcat/conf/server.xml # 編輯主配置文件 ......................... // 省略部份內容 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> .................. # 找到Host元素,添加以下內容 <Context path = "/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true"> </Context> </Host> #上述的 <Context....> </Context>標籤的另外一種寫法就是<Context......./> #在上述添加的配置解釋以下: #Path:指出客戶端訪問的路徑; #docBase:指定網頁的存放路徑; #Debug:指定debug的等級爲0,輸出信息最少,9提供最多的信息; #reloadable:爲true時表示當web.xml文件有改動的時候自動加載,沒必要重啓服務; #CorssContext:爲true時,表示不一樣的context共享一個session(會話池); [root@tomcat /]# /usr/local/tomcat/bin/shutdown.sh # 執行此兩條命令,重啓服務使配置生效 [root@tomcat /]# /usr/local/tomcat/bin/startup.sh
訪問https://192.168.171.134:8080/shop/index1.jsp 驗證
訪問https://192.168.171.134:8080/shop/index2.jsp 驗證vim
4、開啓Tomcat目錄遍歷
在apache或Nginx中,它們的目錄遍歷是默認開啓的,而Tomcat服務,它的目錄遍歷默認是關閉的,有些狀況下,咱們須要開啓它的目錄遍歷功能
直接訪問192.168.171.134:8080/shop/進行測試,會報錯404:
開啓tomcat的遍歷功能:後端
[root@tomcat /]# vim /usr/local/tomcat/conf/web.xml ................... //省略部份內容 <init-param> <param-name>listings</param-name> <param-value>true</param-value> # 搜索false,找到此行,false修改成true便可 </init-param> [root@tomcat /]# /usr/local/tomcat/bin/shutdown.sh # 重啓tomcat使配置生效 [root@tomcat /]# /usr/local/tomcat/bin/startup.sh
從新訪問192.168.171.134:8080/shop/ 進行測試:
5、Tomcat配置https
[root@tomcat /]# keytool -genkey -v -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/conf/tomcat.eystore -validity 36500 # 獲取證書 Enter keystore password: # 填寫密鑰 Re-enter new password: What is your first and last name? # 你的姓和名是什麼? [Unknown]: zyz What is the name of your organizational unit? # 你組織單位名稱是什麼? [Unknown]: hh What is the name of your organization? # 您的組織名稱是什麼? [Unknown]: test What is the name of your City or Locality? # 你的城市或地區的名字是什麼? [Unknown]: bj What is the name of your State or Province? # 你的州或省的名字是什麼? [Unknown]: bj What is the two-letter country code for this unit? # 這個單位的國家代號是什麼? [Unknown]: cn Is CN=zyz, OU=, O=test, L=bj, ST=bj, C=cn correct? # 是否肯定? [no]: y Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 36,50 days for: CN=zyz, OU=, O=test, L=bj, ST=bj, C=cn Enter key password for <tomcat> (RETURN if same as keystore password): # 直接回車便可 [Storing /usr/local/tomcat/conf/tomcat.keystore] [root@tomcat /]# vim /usr/local/tomcat/conf/server.xml ................ // 省略部份內容 #在service元素中添加以下內容 <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" keystoreFile="/usr/local/tomcat/conf/tomcat.keystore" # 指定文件存放位置 keystorePass="123.com" > # 指定密鑰 </Connector> [root@tomcat /]# /usr/local/tomcat/bin/shutdown.sh # 重啓服務使配置生效 [root@tomcat /]# /usr/local/tomcat/bin/startup.sh [root@tomcat /]# netstat -anput | grep 443 # 查看端口是否監聽 tcp6 0 0 :::443 :::* LISTEN 4795/java
訪問https://192.168.171.134 進行驗證:
6、使用Tomcat實時監控JVM虛擬機資源使用狀況
[root@tomcat /]# vim /usr/local/tomcat/conf/server.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path = "/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true"> # zai host元素中添加以下內容 </Context> <Context path = "/jiankong" docBase="/data/jiankong" debug="0" reloadable="flase" crossContext="true"/> </Host> [root@tomcat /]# mkdir -p /data/jiankong # 建立測試網站根目錄 [root@tomcat /]# vim /data/jiankong/index.jsp # 編輯測試文件 <% Runtime rtm = Runtime.getRuntime(); long mm = rtm.maxMemory()/1024/1024; long tm = rtm.totalMemory()/1024/1024; long fm = rtm.freeMemory()/1024/1024; out.println("JVM memory detail info :<br>"); out.println("Max memory:"+mm+"MB"+"<br>"); out.println("Total memory: "+tm+"MB"+"<br>"); out.println("Free memory: "+fm+"MB"+"<br>"); out.println("Available memmory can be used is :"+(mm+fm-tm)+"MB"+"<br>"); %> [root@tomcat /]# /usr/local/tomcat/bin/shutdown.sh # 重啓服務使配置生效 [root@tomcat /]# /usr/local/tomcat/bin/startup.sh
訪問http://192.168.171.134:8080/jiankong/ 驗證:
7、開啓JMX遠程調試功能
[root@tomcat /]# vim /usr/local/tomcat/bin/catalina.sh # 編輯此文件,跳轉到306行 export JDK_JAVA_OPTIONS # 在此行下面添加以下內容 CATALINA_OPTS=" $CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true" [root@tomcat /]# cd /usr/local/jdk1.8.0_211/jre/lib/management/ [root@tomcat management]# cp jmxremote.password.template jmxremote.password [root@tomcat management]# vim jmxremote.password #跳轉到最後一行添加以下內容 zyz 123.com #因爲是隻讀文件,因此須要wq!強制保存退出 [root@tomcat management]# vim jmxremote.access #在最後一行添加以下內容 zyz readwrite \ create javax.management.monitor.*,javax.management.timer.* \ unregister [root@tomcat management]# chmod 600 jmxremote.password jmxremote.access #必須修改其權限爲600,不然會失敗 [root@tomcat management]# /usr/local/tomcat/bin/shutdown.sh # 重啓服務使配置生效 [root@tomcat management]# /usr/local/tomcat/bin/startup.sh [root@tomcat /]# . /etc/profile # 執行刷新變量 [root@tomcat /]# jconsole # 執行此命令
驗證其遠程調試功能,因爲其須要圖形化的支持,因此須要進入其圖形化桌面環境,下面的操做不能夠在xshell上進行了:
而後點擊以下:
而後就能夠看到以下界面,顯示JVM虛擬機的使用狀況:
8、開啓mangent管理頁面
一、在訪問Tomcat的默認界面時,有一個「Manager App」的框,以下:
二、點擊進入後,會看到如下403報錯頁面,咱們須要複製它提示的代碼:
此錯誤頁面,已經將緣由及該如何配置寫的明明白白的。
三、配置開啓它的manager管理頁面:
[root@tomcat /]# vim /usr/local/tomcat/conf/tomcat-users.xml #在末尾添加以下兩行 <role rolename="manager-gui"/> <user username="tomcat" password="s3cret" roles="manager-gui"/> </tomcat-users> # 此行是結尾沒必要寫 [root@tomcat /]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml <Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.171.134|192.168.171.1|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> #在上面「allow=」後添加容許訪問的IP,以管道符「 | 」爲分割 <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context> [root@tomcat /]# /usr/local/tomcat/bin/shutdown.sh [root@tomcat /]# /usr/local/tomcat/bin/startup.sh
客戶端驗證:
從新點擊,便可提示輸入密碼:
四、下拉頁面,能夠經過war包添加自定義的目錄:
準備war包
[root@tomcat test]# cat index.jsp test test test test test test ................... [root@tomcat test]# jar -cvf test.war index.jsp added manifest adding: index.jsp(in = 80) (out= 10)(deflated 87%)
在web圖形界面,添加war包:
客戶端能夠訪問TomcatIP+8080端口+/test進行訪問測試,其內容就是咱們作的war包中的內容,以下:
9、開啓host-mangent管理頁面
[root@tomcat /]# vim /usr/local/tomcat/conf/tomcat-users.xml .......... // 在末尾處添加以下兩行 <role rolename="admin-gui"/> <user username="zyz" password="123.com" roles="admin-gui"/> </tomcat-users> [root@tomcat /]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml <Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.171.134|192.168.171.1|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> 在allow後添加容許的IP,以「|」分隔開 <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>
客戶端驗證:
10、Tomcat的運行日誌切割
cronolog是一個第三方的日誌切割工具,比較方便快捷,是日誌切割的一大利器。這裏就使用這個第三方工具。
[root@tomcat tomcat]# tar zxf cronolog-1.6.2.tar.gz # 解包 [root@tomcat tomcat]# cd cronolog-1.6.2/ [root@tomcat cronolog-1.6.2]# ./configure && make && make install # 編譯並安裝 [root@tomcat cronolog-1.6.2]# which cronolog # 確保能夠查到cronolog這個命令 /usr/local/sbin/cronolog [root@tomcat cronolog-1.6.2]# vim /usr/local/tomcat/bin/catalina.sh # 編輯此文件 搜索touch 並註釋掉:# touch "$CATALINA_OUT" 跳轉到470行左右修改 org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /usr/local/sbin/cronolog /usr/local/tomcat/logs/test.%Y-%m-%d.out >> /dev/null & 註釋掉:# >> "$CATALINA_OUT" 2>&1 "&" [root@tomcat cronolog-1.6.2]# /usr/local/tomcat/bin/shutdown.sh # 重啓驗證 [root@tomcat cronolog-1.6.2]# /usr/local/tomcat/bin/startup.sh [root@tomcat logs]# ls # 確保有test.2020-01-12.out catalina.2020-01-12.log localhost.2020-01-12.log test.2020-01-12.out catalina.out localhost_access_log.2020-01-12.txt host-manager.2020-01-12.log manager.2020-01-12.log
11、定義Tomcat 404錯誤返回的頁面
默認狀況,客戶端訪問Tomcat服務器上一個不存在的目錄時,會提示404錯誤,並且會將咱們Tomcat的版本信息等顯示出來,這是咱們比較忌諱的,默認的404返回的錯誤頁面以下:
解決辦法就是,將404狀態碼進行重定向,以便咱們自定義返回的頁面信息,以下:
[root@tomcat logs]# cat /usr/local/tomcat/webapps/ROOT/error.jsp Access Error... [root@tomcat logs]# vim /usr/local/tomcat/conf/web.xml version="3.1"> # 在22行附近添加以下內容 <error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> [root@tomcat /]# /usr/local/tomcat/bin/shutdown.sh # 重啓驗證 [root@tomcat /]# /usr/local/tomcat/bin/startup.sh
再次訪問一個不存在的頁面進行驗證:
12、Tomcat的內存優化
[root@tomcat ~]# vim /usr/local/tomcat/bin/catalina.sh #編輯此文件 #!/bin/sh #在第一行下面添加如下內容 JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1023M -Xmx1024M -XX:NewSize=512M -XX:MaxNewSize=1020M -XX:NewRatio=2 -XX:ParallelGCThreads=15 -XX:+DisableExplicitGC" #添加完成後,保存退出後,重啓Tomcat後,便可生效, #能夠經過以前的實時監控JVM虛擬機資源使用進行查看驗證 #如果在Tomcat 8.0以前的版本,還能夠在上面添加如下兩個配置項,8.0之後的版本就被移除了: #-XX:PermSize=256M #-XX:MaxPermSize=356M
添加的各個配置項解釋以下:
-Xms:表示 JVM初始內存大小,也能夠說是Java 初始化堆的大小,-Xms 與-Xmx 設成同樣的值,避免 JVM 反覆從新申請內存,致使性能大起大落,默認值爲物理內存的 1/64
-Xmx:表示最大 Java 堆大小,當應用程序須要的內存超出堆的最大值時虛擬機就會提示內存溢出,而且致使應用服務崩潰,所以通常建議堆的最大值設置爲可用內存的最大值的80%。
-Xmn:設置JVM最小內存(128-256就夠了,通常不設置)
-XX:NewSize:設置新生代內存大小。 新生代,對象新建立的時候分配的內存空間,老生代在垃圾回收器回收事後該對象依然沒有被回收,該對象就會移動到老生代
-XX:PermSize:設置持久代內存大小,用於存放靜態文件,現在Java類、方法等。持久代對垃圾回收沒有顯著影響,可是有些應
用可能動態生成或者調用一些class,持久帶也稱爲方法區,方法區存儲每個java類的結構信息:好比運行時常量池,字段和方法數據,構造函數和普通方法的字節碼內容以及類、實例、接口初始化時須要使用到的特殊方法等數據,JDK8中已經把持久代(PermGen Space) 幹掉了,取而代之的元空間(Metaspace)。Metaspace佔用的是本地內存,再也不佔用虛擬機內存。
-XX:MaxPermSize:設置最大值持久代內存大小,永久代不屬於堆內存,堆內存只包含新生代和老年代
-XX:NewRatio:改變新舊空間的比例,意思是新空間的尺寸是舊空間的1/8(默認爲8)
-XX:ParallelGCThreads 可用來增長並行度,須要多cpu
-XX:+DisableExplicitGC:關閉System.gc(),簡單理解就是關閉java中的內存回收機制
十3、Tomcat線程池的優化
[root@tomcat /]# vim /usr/local/tomcat/conf/server.xml # 編輯zh主配置文件 <Service name="Catalina"> # 在53行下面添加以下內容 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThread="4"/> <Connector port="8080" protocol="HTTP/1.1" # 在69行下面添加以下內容 executor="tomcatThreadPool"
上述Excutor重要參數說明:
- name:共享線程池的名字,這是connector爲了共享線程池要引用的名字,該名稱必須惟一
- namePrefix:在JVM上,每運行線程均可以有一個name字符串,這一屬性爲線程池中每一個線程的name字符串設置了一個前綴,Tomcat將把線程號追加到這一前綴後面,默認值爲tomcat-exec-
- maxThreads:該線程池能夠容納的最大線程數,默認200
- minSpareThreads:Tomcat應該始終打開的最小不活躍線程數,默認25
- Connector參數說明
- executor:表示使用參數值對應的線程池。
十4、修改Tomcat服務的請求方式
Tomcat支持的三種請求方式:BIO、NIO、APR。
- BIO:阻塞式I/O操做,Tomcat7如下版本默認狀況下是以bio模式運行的,每一個請求都要建立一個線程來處理,線程開銷比較大,不適用高併發的場景,性能也最低;
- NIO:基於緩衝區,能提供非阻塞I/O操做,和傳統的BIO相比,具有更好的併發性能
- APR(Apache portable run-time libraries):簡單理解,就是從操做系統級別解決異步IO問題,大幅度的提升服務器的處理和相應性能,也是Tomcat運行高併發的首選模式
APR提供的主要功能模塊包括:內存分配及內存池、原子操做、文件I/O、鎖、內存映射、哈希表、網絡I/O、輪詢、進程及線程操做等等,經過採用APR,Tomcat能夠得到高度可擴展性以及優越的性能,而且能夠更好的與本地服務器技術集成,從而可使Tomcat做爲一款通用的Web服務器使用,而不只僅做爲輕量級應用服務器。在這種狀況下,Java將再也不是一門側重於後端的編程語言,也能夠更多的用於成熟的Web服務器平臺。
一、更改其請求方式爲NIO(注意:Tomcat8以上版本,默認使用的就是NIO模式,不須要額外修改 )
[root@tomcat /]# vim /usr/local/tomcat/conf/server.xml # 編輯zh主配置文件 <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" # 修改成nio executor="tomcatThreadPool" connectionTimeout="20000" redirectPort="8443" />
重啓後,查看其「catalina.out」日誌,有如下字樣,則表示是在nio接收請求處理方式,以下(我這裏在上面對catalina.out進行了日誌切割,因此須要查看切割後的日誌文件):
二、更改其請求方式爲APR模式
啓用這種模式稍微麻煩一些,須要安裝一些依賴庫,下面是基於centos 7.3環境的Tomcat/8.5.35進行配置。
安裝apr動態庫:
[root@tomcat /]# yum -y install apr-devel openssl-devel gcc make [root@tomcat /]# cd /usr/local/tomcat/bin/ [root@tomcat bin]# tar zxf tomcat-native.tar.gz [root@tomcat bin]# cd tomcat-native-1.2.18-src/native/ [root@tomcat native]# ./configure && make && make install #編譯安裝完成後,apr動態庫默認安裝在/usr/local/apr/lib目錄下。
配置APR本地庫到系統共享庫搜索路徑中:
設置LD_LIBRARY_PATH和LD_RUN_PATH環境變量,指向/usr/local/apr/lib目錄,可配置到/etc/profile文件中。以下:
[root@tomcat native]# vim /etc/profile #編輯全局變量,在文件末尾寫入如下兩行 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib [root@tomcat native]# . /etc/profile #從新加載環境變量 #重啓驗證 [root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh [root@tomcat ~]# /usr/local/tomcat/bin/startup.sh [root@tomcat native]# vim /usr/local/tomcat/conf/server.xml <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" # xiugai修改成apr executor="tomcatThreadPool" connectionTimeout="20000" redirectPort="8443" />