溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Tomcat安裝及優(yōu)化配置

發(fā)布時(shí)間:2020-07-16 22:51:16 來源:網(wǎng)絡(luò) 閱讀:1093 作者:warrent 欄目:系統(tǒng)運(yùn)維

前言:

Tomcat服務(wù)器是一個(gè)免費(fèi)的開源web應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)用戶不是很多的場(chǎng)合中被普遍使用,是開發(fā)和測(cè)試JSP程序的首選。一般來說,Tomcat雖然和apache或者Nginx這些web服務(wù)器一樣,具有處理HTML頁面的功能,然而由于其處理靜態(tài)頁面的能力遠(yuǎn)不如apache或者Nginx,所以Tomcat一般是作為一個(gè)servlet和JSP容器,單獨(dú)運(yùn)行在后端。

關(guān)于Tomcat服務(wù)的各個(gè)目錄的說明及配置文件的解釋,可以參考博文:Tomcat服務(wù)器配置文件詳解,或者訪問其Tomcat官網(wǎng),以閱讀官方文檔。


博文大綱:
一、部署Tomcat
二、定義Tomcat多實(shí)例
三、配置Tomcat自定義目錄
四、開啟Tomcat目錄遍歷
五、使用Tomcat實(shí)時(shí)監(jiān)控JVM虛擬機(jī)資源使用情況
六、開啟JMX遠(yuǎn)程調(diào)試功能
七、開啟mangent管理頁面
八、開啟host-mangent管理頁面
九、Tomcat的運(yùn)行日志切割
十、定義Tomcat 404錯(cuò)誤返回的頁面
十一、Tomcat服務(wù)的內(nèi)存優(yōu)化
十二、Tomcat線程池的優(yōu)化
十三、修改Tomcat服務(wù)的請(qǐng)求方式

一、部署Tomcat

環(huán)境準(zhǔn)備:

  • centos 7一臺(tái),IP為:192.168.20.5
  • 下載我提供的所需源碼包,并上傳至centos 7服務(wù)器。

注:上面的下載鏈接中有一個(gè)名為“tomcat”的文件,那是tomcat服務(wù)的控制腳本,可以將其上傳到Tomcat服務(wù)器的/etc/init.d/目錄下,然后使用chmod命令賦予其執(zhí)行權(quán)限,即可實(shí)現(xiàn)使用此腳本對(duì)Tomcat服務(wù)進(jìn)行啟動(dòng)、停止、重啟等操作。

1、開始部署

[root@tomcat ~]# rpm -qa | grep jdk       #查詢系統(tǒng)默認(rèn)的JAVA包
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.8.0-openjdk-headless-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
copy-jdk-configs-1.2-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
[root@tomcat ~]# rpm -e java-1.8.0-openjdk-headless --nodeps        #卸載Java1.8
[root@tomcat ~]# rpm -e java-1.7.0-openjdk-headless --nodeps        #卸載Java1.7
[root@tomcat ~]# cd /usr/src
[root@tomcat src]# rz      #上傳我提供的兩個(gè)源碼包
[root@tomcat src]# ls         #源碼包如下
apache-tomcat-8.5.35.tar.gz  jdk-8u211-linux-x64.tar.gz
[root@tomcat ~]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/   #解壓JDK到指定路徑
[root@tomcat src]# tar zxf apache-tomcat-8.5.35.tar.gz   #解壓Tomcat源碼包
[root@tomcat src]# mv apache-tomcat-8.5.35 /usr/local/tomcat   #將解壓后的目錄移動(dòng)到指定目錄并命名為tomcat
[root@tomcat ~]# vim /etc/profile         #編輯環(huán)境變量,在配置文件末尾添加以下內(nèi)容
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 ~]# . /etc/profile       #重新加載環(huán)境變量
[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           #啟動(dòng)Tomcat服務(wù)
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 src]# netstat -anput | grep 8080      #確定8080端口在監(jiān)聽

至此,Tomcat服務(wù)就運(yùn)行正常了,可以使用客戶端訪問Tomcat服務(wù)器IP+8080端口,可以看到以下頁面:

Tomcat安裝及優(yōu)化配置

二、定義Tomcat多實(shí)例

所謂多實(shí)例,就是在一臺(tái)服務(wù)器上運(yùn)行多個(gè)Tomcat服務(wù),所以,需要注意,在定義Tomcat的多實(shí)例時(shí),千萬不要出現(xiàn)端口沖突的情況。

[root@tomcat src]# cd /usr/local/           #切換至Tomcat服務(wù)的安裝目錄
[root@tomcat local]# cp -r tomcat tomcat2    #將第一個(gè)Tomcat目錄復(fù)制一份并重命名為tomcat2。
[root@tomcat local]# vim tomcat2/conf/server.xml        #修改主配置文件中的所有端口號(hào),防止端口沖突
#配置文件的所有端口號(hào),除了帶注釋的外,都需要修改,
#只要配置項(xiàng)中帶有“port”的,并且后面是數(shù)字的,都是端口號(hào)
#由于其分散在各個(gè)行,所以這里就不寫了,自行修改即可,我這里都將其+1
[root@tomcat local]# cd
[root@tomcat ~]# /usr/local/tomcat2/bin/startup.sh    #使用Tomcat2啟動(dòng)腳本運(yùn)行Tomcat2
[root@tomcat ~]# netstat -natp | grep 8081    #確定修改后的端口在監(jiān)聽

至此,第二個(gè)Tomcat實(shí)例就運(yùn)行正常了,可以使用客戶端訪問Tomcat服務(wù)器IP+8081端口,可以看到以下頁面(由于是完全復(fù)制之前的Tomcat目錄,所以看到的頁面一樣):

Tomcat安裝及優(yōu)化配置

三、配置Tomcat自定義目錄

[root@tomcat ~]# mkdir -p /data/project         #創(chuàng)建目錄
[root@tomcat ~]# cat /data/project/index1.jsp     #第一個(gè)網(wǎng)頁文件
aaaaaaaaaaaaaaaaaaaaaaa
[root@tomcat ~]# cat /data/project/index2.jsp   #第二個(gè)網(wǎng)頁文件
bbbbbbbbbbbbbbbbbbbbbbbbbbb
[root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml    #編輯Tomcat主配置文件
      <Host name="localhost"  appBase="webapps"    #定位到148行左右
            unpackWARs="true" autoDeploy="true">    
                        ..........................#添加以下內(nèi)容
        <Context path = "/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true">
        </Context>
#添加上述 <Context....> </Context>的配置后即可保存退出
#上述的 <Context....> </Context>標(biāo)簽的另一種寫法就是<Context......./>
#在上述添加的配置解釋如下:
#Path:指出客戶端訪問的路徑;
#docBase:指定網(wǎng)頁的存放路徑;
#Debug:指定debug的等級(jí)為0,輸出信息最少,9提供最多的信息;
#reloadable:為true時(shí)表示當(dāng)web.xml文件有改動(dòng)的時(shí)候自動(dòng)加載,不必重啟服務(wù);
#CorssContext:為true時(shí),表示不同的context共享一個(gè)session(會(huì)話池)。
#重啟訪問http://192.168.20.5:8080/shop/index1/2.jsp進(jìn)行驗(yàn)證即可
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh        #停止Tomcat  
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh     #啟動(dòng)Tomcat

訪問192.168.20.5:8080/shop/index1.jsp 進(jìn)行驗(yàn)證:

Tomcat安裝及優(yōu)化配置

訪問192.168.20.5:8080/shop/index2.jsp 進(jìn)行驗(yàn)證:
Tomcat安裝及優(yōu)化配置

四、開啟Tomcat目錄遍歷

在apache或Nginx中,它們的目錄遍歷是默認(rèn)開啟的,而Tomcat服務(wù),它的目錄遍歷默認(rèn)是關(guān)閉的,有些情況下,我們需要開啟它的目錄遍歷功能。

1、直接訪問192.168.20.5:8080/shop/進(jìn)行測(cè)試,會(huì)報(bào)錯(cuò)404:

Tomcat安裝及優(yōu)化配置

2、那么,接下來開啟它的目錄遍歷功能:

[root@tomcat ~]# vim /usr/local/tomcat/conf/web.xml    #編輯這個(gè)文件
<init-param>               #定位到該標(biāo)簽,110行左右
            <param-name>listings</param-name>
            <param-value>true</param-value>         #將原本的false修改為true
#修改后,保存退出即可
#重啟Tomcat服務(wù)
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh          
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh

3、重啟后,刷新剛才的訪問頁面,會(huì)發(fā)現(xiàn)網(wǎng)頁將其shop/指定的目錄下的所有文件都顯示出來了,如下:

Tomcat安裝及優(yōu)化配置

五、使用Tomcat實(shí)時(shí)監(jiān)控JVM虛擬機(jī)資源使用情況

[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">
        </Context>         #在下面添加一行
        <Context path = "monit" docBase="/data/monit" debug="0" reloadable="flase" crossContext="true"/>
#添加后,保存退出即可
[root@tomcat ~]# mkdir /data/monit
[root@tomcat ~]# vim /data/monit/index.jsp      #編寫監(jiān)控腳本,寫入以下內(nèi)容
<%
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

訪問192.168.20.5:8080/monit/會(huì)看到以下頁面:

Tomcat安裝及優(yōu)化配置

六、開啟JMX遠(yuǎn)程調(diào)試功能

[root@tomcat ~]# vim /usr/local/tomcat/bin/catalina.sh          #編輯其文件,跳轉(zhuǎn)文件的306行
export JDK_JAVA_OPTIONS        #在該行下面添加以下內(nèi)容,定義其監(jiān)聽端口為“8888”
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       #在文件末尾寫入需要?jiǎng)?chuàng)建的用戶,如下:
ljz     123.com
#由于其是一個(gè)只讀文件,所以在寫入后,需要使用命令“wq!”以便強(qiáng)制保存
[root@tomcat management]# vim jmxremote.access      #編輯此文件,給用戶定義權(quán)限
#跳轉(zhuǎn)至文件末尾,添加以下配置項(xiàng),也可以直接修改末尾的模板
ljz   readwrite \             #此行開頭指定的是用戶名
              create javax.management.monitor.*,javax.management.timer.* \
              unregister
#寫入以上內(nèi)容后,保存退出即可
[root@tomcat management]# chmod 600 jmxremote.access jmxremote.password     #必須修改其權(quán)限為600,否則會(huì)失敗
#重啟Tomcat服務(wù)
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh          
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh

驗(yàn)證其遠(yuǎn)程調(diào)試功能,由于其需要圖形化的支持,所以需要進(jìn)入其圖形化桌面環(huán)境,下面的操作不可以在xshell上進(jìn)行了:

[root@tomcat ~]# jconsole          #執(zhí)行此命令
#若上述命令無法執(zhí)行,則需要執(zhí)行“. /etc/profile”命令,以便重新加載環(huán)境變量

執(zhí)行jconsole命令后,會(huì)彈出以下界面:

Tomcat安裝及優(yōu)化配置

然后點(diǎn)擊如下:

Tomcat安裝及優(yōu)化配置

就可以看到以下界面,其中顯示的是JVM虛擬機(jī)的資源使用情況:

Tomcat安裝及優(yōu)化配置

七、開啟mangent管理頁面

1、在訪問Tomcat的默認(rèn)界面時(shí),有一個(gè)“Manager App”的框,如下:

Tomcat安裝及優(yōu)化配置

2、點(diǎn)擊進(jìn)入后,會(huì)看到以下403報(bào)錯(cuò)頁面(翻譯過后如下),我們需要復(fù)制它提示的代碼:

此錯(cuò)誤頁面,已經(jīng)將原因及該如何配置寫的明明白白的。
Tomcat安裝及優(yōu)化配置

3、現(xiàn)在配置開啟它的manager管理頁面:

[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat-users.xml      #編輯這個(gè)文件,跳轉(zhuǎn)至文件末尾
<role rolename="manager-gui"/>
<user username="lisi" password="123.com" roles="manager-gui"/>
</tomcat-users>       #在這個(gè)閉合的標(biāo)簽上面添加兩行,以便添加用戶
#添加的配置項(xiàng)中,“username”為用戶名,“password”為用戶密碼。
[root@tomcat ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml    #編輯此文件,添加允許訪問的IP
         allow="192.168.20.254|192.168.20.5|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>
#重啟服務(wù)驗(yàn)證
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh          
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh

4、使用客戶端訪問它的默認(rèn)首頁,然后點(diǎn)擊“Manager App”,會(huì)看到以下界面,輸入用戶名及密碼:

Tomcat安裝及優(yōu)化配置

5、登錄后,即可看到我們的Tomcat根目錄下的自定義目錄:

Tomcat安裝及優(yōu)化配置

6、下拉頁面,可以通過war包添加自定義的目錄:

1)準(zhǔn)備war包:

[root@tomcat ~]# vim index.jsp        #編寫jsp網(wǎng)頁文件
test
test
[root@tomcat ~]# jar -cvf test.war index.jsp     #做成war包,名為“test.war”

2)在web圖形界面,添加war包:
Tomcat安裝及優(yōu)化配置

3)部署后,即可看到以下內(nèi)容:

Tomcat安裝及優(yōu)化配置

4)客戶端可以訪問TomcatIP+8080端口+/aaa進(jìn)行訪問測(cè)試,其內(nèi)容就是我們做的war包中的內(nèi)容,如下:

Tomcat安裝及優(yōu)化配置

八、開啟host-mangent管理頁面

1、訪問以下頁面,然后復(fù)制其提示的代碼:

Tomcat安裝及優(yōu)化配置

Tomcat安裝及優(yōu)化配置

[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat-users.xml  #編輯其配置文件
<role rolename="admin-gui"/>
<user username="lv" password="123.com" roles="admin-gui"/>
</tomcat-users>       #在末尾這行上面添加復(fù)制的代碼,并修改用戶名及密碼
[root@tomcat ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml       #修改這個(gè)文件
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="192.168.20.254|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />  #在這行添加允許訪問的IP來源
#修改后保存退出即可
#重啟驗(yàn)證
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh          
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh

2、客戶端驗(yàn)證:

重新點(diǎn)擊,即可提示輸入密碼:

Tomcat安裝及優(yōu)化配置

Tomcat安裝及優(yōu)化配置

至此,即可通過此頁面管理tomcat的域名信息了,不過這個(gè)功能在生產(chǎn)環(huán)境中不建議使用。

九、Tomcat的運(yùn)行日志切割

cronolog是一個(gè)第三方的日志切割工具,比較方便快捷,是日志切割的一大利器。這里就使用這個(gè)第三方工具。

1、上傳博文開頭下載鏈接中的cronolog-1.6.2.tar.gz源碼包到Tomcat服務(wù)器。

[root@tomcat ~]# tar zxf cronolog-1.6.2.tar.gz -C /usr/src     #解包
[root@tomcat ~]# cd /usr/src/cronolog-1.6.2/
[root@tomcat cronolog-1.6.2]# ./configure && make && make install    #編譯安裝
[root@tomcat cronolog-1.6.2]# which cronolog    #確定可以查到該命令
/usr/local/sbin/cronolog
[root@tomcat cronolog-1.6.2]# cd /usr/local/tomcat/       #切換至Tomcat主目錄
[root@tomcat tomcat]# vim bin/catalina.sh    #編輯此文件
搜索touch,并且注釋掉,如:#touch "$CATALINA_OUT"
然后跳轉(zhuǎn)到470行左右,修改如下:
      org.apache.catalina.startup.Bootstrap "$@" start  2>&1 | /usr/local/sbin/cronolog /usr/local/tomcat/logs/test.%Y-%m-%d.out >> /dev/null &
并且注釋掉473行左右的這一行,如:     #>> "$CATALINA_OUT" 2>&1 "&"
#重啟驗(yàn)證
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh          
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh
#驗(yàn)證:
[root@tomcat tomcat]# ls logs/    #確認(rèn)該目錄下有“test.2019-10-28.out”即可
catalina.2019-10-28.log      localhost_access_log.2019-10-28.txt
catalina.out                 manager.2019-10-28.log
host-manager.2019-10-28.log  test.2019-10-28.out
localhost.2019-10-28.log

十、定義Tomcat 404錯(cuò)誤返回的頁面

默認(rèn)情況,客戶端訪問Tomcat服務(wù)器上一個(gè)不存在的目錄時(shí),會(huì)提示404錯(cuò)誤,而且會(huì)將我們Tomcat的版本信息等顯示出來,這是我們比較忌諱的,默認(rèn)的404返回的錯(cuò)誤頁面如下:

Tomcat安裝及優(yōu)化配置

解決辦法就是,將404狀態(tài)碼進(jìn)行重定向,以便我們自定義返回的頁面信息,如下:

[root@tomcat tomcat]# cat /usr/local/tomcat/webapps/ROOT/error.jsp
#自定義的錯(cuò)誤頁面如下:
Access Error...           
[root@tomcat ~]# vim /usr/local/tomcat/conf/web.xml    #編輯該文件
  version="3.1">            #在這行下面(第22行附近)添加以下內(nèi)容
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
#重啟驗(yàn)證
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh          
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh

此時(shí),再次訪問一個(gè)不存在的URL,就會(huì)看到以下頁面,如下:

Tomcat安裝及優(yōu)化配置

十一、Tomcat服務(wù)的內(nèi)存優(yōu)化

[root@tomcat ~]# vim /usr/local/tomcat/bin/catalina.sh    #編輯此文件

#!/bin/sh          #在第一行下面添加以下內(nèi)容
JAVA_OPTS="-Dfile.encoding=UTF-8
-server
-Xms1023M
-Xmx1024M
-XX:NewSize=512M
-XX:MaxNewSize=1020M
-XX:NewRatio=2
-XX:ParallelGCThreads=15
-XX:+DisableExplicitGC"
#添加完成后,保存退出后,重啟Tomcat后,即可生效,
#可以通過之前的實(shí)時(shí)監(jiān)控JVM虛擬機(jī)資源使用進(jìn)行查看驗(yàn)證
#若是在Tomcat 8.0之前的版本,還可以在上面添加以下兩個(gè)配置項(xiàng),8.0以后的版本就被移除了:
#-XX:PermSize=256M
#-XX:MaxPermSize=356M

添加的各個(gè)配置項(xiàng)解釋如下:

  • -Xms:表示 JVM初始內(nèi)存大小,也可以說是Java 初始化堆的大小,-Xms 與-Xmx 設(shè)成一樣的值,避免 JVM 反復(fù)重新申請(qǐng)內(nèi)存,導(dǎo)致性能大起大落,默認(rèn)值為物理內(nèi)存的 1/64
  • -Xmx:表示最大 Java 堆大小,當(dāng)應(yīng)用程序需要的內(nèi)存超出堆的最大值時(shí)虛擬機(jī)就會(huì)提示內(nèi)存溢出,并且導(dǎo)致應(yīng)用服務(wù)崩潰,因此一般建議堆的最大值設(shè)置為可用內(nèi)存的最大值的80%。
  • -Xmn:設(shè)置JVM最小內(nèi)存(128-256就夠了,一般不設(shè)置)
  • -XX:NewSize:設(shè)置新生代內(nèi)存大小。 新生代,對(duì)象新創(chuàng)建的時(shí)候分配的內(nèi)存空間,老生代在垃圾回收器回收過后該對(duì)象依然沒有被回收,該對(duì)象就會(huì)移動(dòng)到老生代
  • -XX:PermSize:設(shè)置持久代內(nèi)存大小,用于存放靜態(tài)文件,如今Java類、方法等。持久代對(duì)垃圾回收沒有顯著影響,但是有些應(yīng)
    用可能動(dòng)態(tài)生成或者調(diào)用一些class,持久帶也稱為方法區(qū),方法區(qū)存儲(chǔ)每一個(gè)java類的結(jié)構(gòu)信息:比如運(yùn)行時(shí)常量池,字段和方法數(shù)據(jù),構(gòu)造函數(shù)和普通方法的字節(jié)碼內(nèi)容以及類、實(shí)例、接口初始化時(shí)需要使用到的特殊方法等數(shù)據(jù),JDK8中已經(jīng)把持久代(PermGen Space) 干掉了,取而代之的元空間(Metaspace)。Metaspace占用的是本地內(nèi)存,不再占用虛擬機(jī)內(nèi)存。
  • -XX:MaxPermSize:設(shè)置最大值持久代內(nèi)存大小,永久代不屬于堆內(nèi)存,堆內(nèi)存只包含新生代和老年代
  • -XX:NewRatio:改變新舊空間的比例,意思是新空間的尺寸是舊空間的1/8(默認(rèn)為8)
  • -XX:ParallelGCThreads 可用來增加并行度,需要多cpu
  • -XX:+DisableExplicitGC:關(guān)閉System.gc(),簡(jiǎn)單理解就是關(guān)閉java中的內(nèi)存回收機(jī)制

十二、Tomcat線程池的優(yōu)化

[root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml   #編輯主配置文件
 <Service name="Catalina">                #在53行下添加以下內(nèi)容
     <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThread="4"/>
<Connector port="8080" protocol="HTTP/1.1"          #在69行下面添加以下配置,以便進(jìn)行調(diào)用
               executor="tomcatThreadPool"

上述Excutor重要參數(shù)說明:

  • name:共享線程池的名字,這是connector為了共享線程池要引用的名字,該名稱必須唯一
  • namePrefix:在JVM上,每運(yùn)行線程都可以有一個(gè)name字符串,這一屬性為線程池中每個(gè)線程的name字符串設(shè)置了一個(gè)前綴,Tomcat將把線程號(hào)追加到這一前綴后面,默認(rèn)值為tomcat-exec-
  • maxThreads:該線程池可以容納的最大線程數(shù),默認(rèn)200
  • minSpareThreads:Tomcat應(yīng)該始終打開的最小不活躍線程數(shù),默認(rèn)25
    Connector參數(shù)說明
  • executor:表示使用參數(shù)值對(duì)應(yīng)的線程池。

十三、修改Tomcat服務(wù)的請(qǐng)求方式

Tomcat支持的三種請(qǐng)求方式:BIO、NIO、APR。

  • BIO:阻塞式I/O操作,Tomcat7以下版本默認(rèn)情況下是以bio模式運(yùn)行的,每個(gè)請(qǐng)求都要?jiǎng)?chuàng)建一個(gè)線程來處理,線程開銷比較大,不適用高并發(fā)的場(chǎng)景,性能也最低;
  • NIO:基于緩沖區(qū),能提供非阻塞I/O操作,和傳統(tǒng)的BIO相比,具備更好的并發(fā)性能
  • APR(Apache portable run-time libraries):簡(jiǎn)單理解,就是從操作系統(tǒng)級(jí)別解決異步IO問題,大幅度的提高服務(wù)器的處理和相應(yīng)性能,也是Tomcat運(yùn)行高并發(fā)的首選模式

APR提供的主要功能模塊包括:內(nèi)存分配及內(nèi)存池、原子操作、文件I/O、鎖、內(nèi)存映射、哈希表、網(wǎng)絡(luò)I/O、輪詢、進(jìn)程及線程操作等等,通過采用APR,Tomcat可以獲得高度可擴(kuò)展性以及優(yōu)越的性能,并且可以更好的與本地服務(wù)器技術(shù)集成,從而可以使Tomcat作為一款通用的Web服務(wù)器使用,而不僅僅作為輕量級(jí)應(yīng)用服務(wù)器。在這種情況下,Java將不再是一門側(cè)重于后端的編程語言,也可以更多的用于成熟的Web服務(wù)器平臺(tái)。

1、更改其請(qǐng)求方式為NIO(注意:Tomcat8以上版本,默認(rèn)使用的就是NIO模式,不需要額外修改 )

[root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml        #修改主配置文件
 <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"           #修改其protocol
               executor="tomcatThreadPool"
               connectionTimeout="20000"
               redirectPort="8443" />
#修改完成后,保存退出,重啟Tomcat服務(wù)即可

重啟后,查看其“catalina.out”日志,有以下字樣,則表示是在nio接收請(qǐng)求處理方式,如下(我這里在上面對(duì)catalina.out進(jìn)行了日志切割,所以需要查看切割后的日志文件):
Tomcat安裝及優(yōu)化配置

2、更改其請(qǐng)求方式為APR模式

啟用這種模式稍微麻煩一些,需要安裝一些依賴庫(kù),下面是基于centos 7.3環(huán)境的Tomcat/8.5.35進(jìn)行配置。

1)安裝apr動(dòng)態(tài)庫(kù)

[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動(dòng)態(tài)庫(kù)
#編譯安裝完成后,apr動(dòng)態(tài)庫(kù)默認(rèn)安裝在/usr/local/apr/lib目錄下。

2)配置APR本地庫(kù)到系統(tǒng)共享庫(kù)搜索路徑中

設(shè)置LD_LIBRARY_PATH和LD_RUN_PATH環(huán)境變量,指向/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        #重新加載環(huán)境變量
#重啟驗(yàn)證
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh          
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh

重啟后,查看其“catalina.out”日志,有以下字樣,則表示是在apr接收請(qǐng)求處理方式,如下(我這里在上面對(duì)catalina.out進(jìn)行了日志切割,所以需要查看切割后的日志文件):

Tomcat安裝及優(yōu)化配置

———————— 本文至此結(jié)束,感謝閱讀 ————————

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI