日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat服务部署和优化

發(fā)布時(shí)間:2024/9/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat服务部署和优化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、Tomcat介紹
    • 1.1 什么是Tomcat
    • 1.2 Tomcat的構(gòu)成組件
      • 1.2.1 Java Servlet 介紹
      • 1.2.2 JSP介紹
    • 1.3 Tomcat頂層架構(gòu)
      • 1.3.1 四個(gè)子容器的作用分別是:
    • 1.4 Tomcat請(qǐng)求過(guò)程
  • 二、Tomcat服務(wù)部署
    • 2.1 Tomcat服務(wù)部署的步驟(理論)
      • 1.關(guān)閉防火墻,將安裝 Tomcat 所需軟件包傳到/opt目錄下
      • 2.安裝JDK
      • 3.設(shè)置JDK環(huán)境變量
      • 4.安裝啟動(dòng)Tomcat
      • 5.優(yōu)化tomcat啟動(dòng)速度
    • 2.2 Tomcat服務(wù)部署的具體實(shí)驗(yàn)步驟(實(shí)操)
  • 三、Tomcat服務(wù)優(yōu)化
    • 3.1 Tomcat 虛擬主機(jī)配置
      • 3.1.1Tomcat 虛擬主機(jī)配置的步驟(理論)
        • 1.創(chuàng)建 kgc 和 benet 項(xiàng)目目錄和文件
        • 2.修改 Tomcat 主配置文件
        • 3.客戶端瀏覽器訪問(wèn)驗(yàn)證
      • 3.1.2 Tomcat 虛擬主機(jī)配置的具體實(shí)驗(yàn)步驟(實(shí)操)
    • 3.2 Tomcat 配置參數(shù)優(yōu)化

一、Tomcat介紹

1.1 什么是Tomcat

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

官方網(wǎng)站:https://tomcat.apache.org/

1.2 Tomcat的構(gòu)成組件

Tomcat 由一系列的組件構(gòu)成,其中核心的組件有三個(gè):
(1)Web 容器:完成 Web 服務(wù)器的功能。

(2)Servlet 容器:名字為 catalina,用于處理 Servlet 代碼。

(3)JSP 容器:用于將 JSP 動(dòng)態(tài)網(wǎng)頁(yè)翻譯成 Servlet 代碼。

1.2.1 Java Servlet 介紹

是運(yùn)行在 Web 服務(wù)器或應(yīng)用服務(wù)器上的程序,它是作為來(lái)自 Web 瀏覽器或其他 HTTP 客戶端的請(qǐng)求和 HTTP 服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序之間的中間層。使用Servlet,可以收集來(lái)自網(wǎng)頁(yè)表單的用戶輸入,呈現(xiàn)來(lái)自數(shù)據(jù)庫(kù)或者其他源的記錄,還可以動(dòng)態(tài)創(chuàng)建網(wǎng)頁(yè)。與CGI(公共網(wǎng)關(guān)接口)功能相類似。

1.2.2 JSP介紹

JSP全稱Java Server Pages,是一種動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。它使用JSP標(biāo)簽在HTML網(wǎng)頁(yè)中插入Java代碼。標(biāo)簽通常以<%開(kāi)頭,以%>結(jié)束。
JSP是一種Java servlet,主要用于實(shí)現(xiàn)Java web應(yīng)用程序的用戶界面部分。
JSP通過(guò)網(wǎng)頁(yè)表單獲取用戶輸入數(shù)據(jù)、訪問(wèn)數(shù)據(jù)庫(kù)及其他數(shù)據(jù)源,然后動(dòng)態(tài)地創(chuàng)建網(wǎng)頁(yè)。

1.3 Tomcat頂層架構(gòu)

1、Tomcat中最頂層的容器是Server,代表著整個(gè)服務(wù)器,一個(gè)Server可以包含至少一個(gè)Service,用于具體提供服務(wù)。
2、Service主要包含兩個(gè)部分:Connector和Container。Tomcat的心臟就是這兩個(gè)組件,這兩個(gè)組件的作用:Connector用于處理連接相關(guān)的事情,并提供Socket與Request和Response相關(guān)的轉(zhuǎn)化; Conta iner用于封裝和管理Servlet,以及具體處理Request請(qǐng)求。
3、一個(gè)Tomcat中只有一個(gè)Server,一個(gè)Server可以包含多個(gè)Service,一個(gè)Service只有一個(gè)Container,但是可以有多個(gè)Connectors,因?yàn)橐粋€(gè)服務(wù)可以有多個(gè)連接,如同時(shí)提供Http和Https鏈接,也可以提供向相同協(xié)議不同端口的連接。
4、多個(gè)Connector和一個(gè)Container就形成了一個(gè)Service,有了Service就可以對(duì)外提供服務(wù)了,但是Service還要一個(gè)生存的環(huán)境,必須要有人能夠給它生命、掌握其生死大權(quán),那就非Server莫屬了!所以整個(gè)Tomcat的生命周期由Server控制。另外,上述的包含關(guān)系或者說(shuō)是父子關(guān)系,都可以在tomcat的conf目錄下的server .xml配置文件中看出。
5、server.xm1中定義這會(huì)讓Tomcat6啟動(dòng)一個(gè)server實(shí)例(即一個(gè)JVM),它監(jiān)聽(tīng)在8005端口以接收“SHUTDOWN”命令,如果接收到了就會(huì)關(guān)閉Tomcat。各Server的定義不能使用同一個(gè)端口,這意味著如果在同一個(gè)物理機(jī)上啟動(dòng)了多個(gè)Server實(shí)例,必須配置它們使用不同的端口。

1.3.1 四個(gè)子容器的作用分別是:

(1) Engine: 引擎,用來(lái)管理多個(gè)站點(diǎn),一個(gè)Service最多只能有一個(gè)Engine;

(2) Host:代表一個(gè)站點(diǎn),也可以叫虛擬主機(jī),通過(guò)配置Host就可以添加站點(diǎn);

(3) Context:代表一個(gè)應(yīng)用程序,對(duì)應(yīng)著平時(shí)開(kāi)發(fā)的一套程序,或者一個(gè)WEB-INF目錄以及下面的web.xml文件;

(4) Wrapper: 每一Wrapper封裝著 一個(gè)Servlet;

1.4 Tomcat請(qǐng)求過(guò)程

用戶在瀏覽器中輸入該網(wǎng)址,請(qǐng)求被發(fā)送到本機(jī)端口8080,被在那里監(jiān)聽(tīng)的Coyote HTTP/1.1 Connector獲得;
Connector把該請(qǐng)求交給它所在的Service的Engine (Container) 來(lái)處理,并等待Engine的回應(yīng);
Engine獲得請(qǐng)求localhost/test/index.jsp,匹配所有的虛擬主機(jī)Host;
Engine匹配到名為localhost的Host(即使匹配不到也把請(qǐng)求交給該Host處理,因?yàn)樵揌ost被定義為該Engine的默認(rèn)主機(jī)),名為localhostHost獲得請(qǐng)求/test/index.jsp,匹配它所擁有的所有Context。Host匹配到路徑為/test的Context(如果匹配不到就把該請(qǐng)求交給路徑名為“”的Context去處理);
path="/test"的Context獲得請(qǐng)求/ index. jsp,在它的mapping table中尋找出對(duì)應(yīng)的Servlet。Context 匹配到URLPattern為* .jsp的Servlet,對(duì)應(yīng)于JspServlet類;
構(gòu)造HttpServletRequest對(duì)象和HttpServletResponse對(duì)象,作為參數(shù)調(diào)用JspServlet的doGet()或doPost(),執(zhí)行業(yè)務(wù)邏輯、數(shù)據(jù)存儲(chǔ)等
Context把執(zhí)行完之后的HttpServletResponse對(duì)象返回給Host; .
Host把HttpServletResponse對(duì)象返回給Engine;
Engine把HttpServletResponse對(duì)象返回Connector;
Connector把HttpServletResponse對(duì)象返回給客戶Browse

二、Tomcat服務(wù)部署

2.1 Tomcat服務(wù)部署的步驟(理論)

在部署 Tomcat 之前必須安裝好 jdk,因?yàn)?jdk 是 Tomcat 運(yùn)行的必要環(huán)境。

1.關(guān)閉防火墻,將安裝 Tomcat 所需軟件包傳到/opt目錄下

jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gz

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2.安裝JDK

cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm
rpm -ivh jdk-8u201-linux-x64.rpm
java -version #可以查看到j(luò)ava的版本:"1.8.0_131"是默認(rèn)自帶的

3.設(shè)置JDK環(huán)境變量

vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:JAVAHOME/lib/tools.jar:JAVA_HOME/lib/tools.jar:JAVAH?OME/lib/tools.jar:JAVA_HOME/lib/dt.jar
export PATH=JAVAHOME/bin:JAVA_HOME/bin:JAVAH?OME/bin:PATH

source /etc/profile.d/java.sh
java -version
補(bǔ)充:
CLASSPATH:編譯、運(yùn)行Java程序時(shí),JRE會(huì)去該變量指定的路徑中搜索所需的類(.class)文件。
dt.jar:是關(guān)于運(yùn)行環(huán)境的類庫(kù),主要是 swing 的包。
tools.jar:主要是一些jdk工具的類庫(kù),包括javac,java,javap,javadoc等。
JDK :java development kit (java開(kāi)發(fā)工具)
JVM :java virtuak machine (java虛擬機(jī)),使java程序可以在多種平臺(tái)上運(yùn)行class文件。

寫(xiě)一個(gè)簡(jiǎn)單的java程序測(cè)試JDK是否搭建成功

vim hello.java

public class hello {
public static void main(String[] args){
System.out.println(“Hello world!”);
}
}

javac hello.java #對(duì)文件進(jìn)行編譯
java hello #運(yùn)行java程序

4.安裝啟動(dòng)Tomcat

cd /opt

tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat

##啟動(dòng)tomcat ##
#后臺(tái)啟動(dòng)

/usr/local/tomcat/bin/startup.sh

/usr/local/tomcat/bin/catalina.sh start

#前臺(tái)啟動(dòng)

/usr/local/tomcat/bin/catalina.sh run

/usr/local/tomcat/bin/startup.sh

netstat -natp | grep :8080 #查看8080端口是否開(kāi)啟

瀏覽器訪問(wèn)Tomcat的默認(rèn)主頁(yè) http://192.168.80.200:8080

5.優(yōu)化tomcat啟動(dòng)速度

第一次啟動(dòng)查看日志會(huì)發(fā)現(xiàn) Tomcat 啟動(dòng)很慢,默認(rèn)情況下可能會(huì)需要幾十秒,可以修改jdk參數(shù)進(jìn)行改。

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security

–117行–修改
securerandom.source=file:/dev/urandom

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

ll /usr/local/tomcat/

主要目錄說(shuō)明

●bin :存放啟動(dòng)和關(guān)閉 Tomcat 的腳本文件,比較常用的是 catalina.sh、startup.sh、shutdown.sh 三個(gè)文件
●conf :存放 Tomcat 服務(wù)器的各種配置文件,比較常用的是server.xml、context.xml、tomcat-users.xml、web.xml 四個(gè)文件。
●lib :存放 Tomcat服務(wù)器的 jar 包,一般不作任何改動(dòng),除非連接第三方服務(wù),比如 redis,那就需要添加相對(duì)應(yīng)的 jar 包
●logs :存放Tomcat 日志
●temp :存放 Tomcat 運(yùn)行時(shí)產(chǎn)生的文件
●webapps :存放項(xiàng)目資源的目錄
●work :Tomcat工作目錄,一般清除 Tomcat 緩存的時(shí)候會(huì)使用到

2.2 Tomcat服務(wù)部署的具體實(shí)驗(yàn)步驟(實(shí)操)

第一步:放入相關(guān)安裝包到/opt目錄下

第二步:關(guān)閉防火墻和selinux

第三步:安裝JDK

第四步:設(shè)置JDK環(huán)境變量
1)創(chuàng)建java.sh 腳本

2)執(zhí)行腳本文件,查看版本

第五步:編寫(xiě)一個(gè)java程序進(jìn)行測(cè)試
1)編寫(xiě)helloworld程序

2)使用javac進(jìn)行編譯

第六步:安裝啟動(dòng)Tomcat
1)解壓tomcat程序

2)將解壓后的文件移至/urs/local命令下并改名為tomcat

3)啟動(dòng)Tomcat

4)關(guān)閉tomcat

第七步:瀏覽器訪問(wèn)測(cè)試

第八步:優(yōu)化tomcat啟動(dòng)速度

/dev/urandom是/dev/random的非阻塞版本,即當(dāng)熵池中沒(méi)有可取的隨機(jī)數(shù)時(shí),讀取/dev/urandom設(shè)備仍然會(huì)返回一個(gè)隨機(jī)數(shù),只是該隨機(jī)數(shù)的安全性理論上不高。如果應(yīng)用對(duì)安全性要求很高,那么應(yīng)該使用/dev/random。

三、Tomcat服務(wù)優(yōu)化

3.1 Tomcat 虛擬主機(jī)配置

3.1.1Tomcat 虛擬主機(jī)配置的步驟(理論)

使用環(huán)境:很多時(shí)候公司會(huì)有多個(gè)項(xiàng)目需要運(yùn)行,那么肯定不可能是一臺(tái)服務(wù)器上運(yùn)行多個(gè)Tomcat服務(wù),這樣會(huì)消耗太多的系統(tǒng)資源。此時(shí),就需要使用到 Tomcat 虛擬主機(jī)。例如現(xiàn)在新增兩個(gè)域名 www.kgc.com 和 bbs.benet.com,希望通過(guò)這兩個(gè)域名訪問(wèn)到不同的項(xiàng)目?jī)?nèi)容。

1.創(chuàng)建 kgc 和 benet 項(xiàng)目目錄和文件

mkdir /usr/local/tomcat/webapps/kgc
mkdir /usr/local/tomcat/webapps/benet
echo “This is kgc page!” > /usr/local/tomcat/webapps/kgc/index.jsp
echo “This is benet page!” > /usr/local/tomcat/webapps/benet/index.jsp

2.修改 Tomcat 主配置文件

vim /usr/local/tomcat/conf/server.xml

–165行前–插入


/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

Host name :主機(jī)名
appBase :Tomcat程序工作目錄,相對(duì)路徑為webapps,絕對(duì)路徑為/usr/local/tomcat/webapps
unpackWARs :是否解壓war包
autoDeploy :指示Tomcat運(yùn)行時(shí),如有新的WEB應(yīng)用是否允許自動(dòng)部署
xmlValidation :是否驗(yàn)證xml文件執(zhí)行有效性檢驗(yàn)的標(biāo)志
xmlNamespaceAware :是否啟用xml命名空間,設(shè)置該值與xmlValidation為true,表示對(duì)web.xml文件執(zhí)行有效性檢驗(yàn)

appBase :WEB應(yīng)用的目錄
reloadable :是否在程序有改動(dòng)時(shí)重新載入

3.客戶端瀏覽器訪問(wèn)驗(yàn)證

echo “192.168.153.40 www.kgc.com www.benet.com” >> /etc/hosts

瀏覽器訪問(wèn) http://www.kgc.top:8080 頁(yè)面顯示This is kgc page!
瀏覽器訪問(wèn) http://www.benet.top:8080 頁(yè)面顯示This is benet page!

3.1.2 Tomcat 虛擬主機(jī)配置的具體實(shí)驗(yàn)步驟(實(shí)操)

第一步:創(chuàng)建kgc和benet項(xiàng)目目錄和文件

第二步:修改tomcat主配置文件

第三步:重啟tomcat服務(wù)

第四步:在hosts文件內(nèi)添加域名和IP

第五步:瀏覽器中進(jìn)行訪問(wèn)測(cè)試

3.2 Tomcat 配置參數(shù)優(yōu)化

Tomcat默認(rèn)安裝下的缺省配置并不適合生產(chǎn)環(huán)境,它可能會(huì)頻繁出現(xiàn)假死現(xiàn)象需要重啟,只有通過(guò)不斷壓測(cè)優(yōu)化才能讓它最高效率穩(wěn)定的運(yùn)行。優(yōu)化主要包括三方面,分別為操作系統(tǒng)優(yōu)化(內(nèi)核參數(shù)優(yōu)化),Tomcat配置文件參數(shù)優(yōu)化,Java虛擬機(jī)(JVM)調(diào)優(yōu)。
常用的優(yōu)化相關(guān)參數(shù)如下:
參數(shù) 解釋
【maxThreads】 Tomcat 使用線程來(lái)處理接收的每個(gè)請(qǐng)求,這個(gè)值表示 Tomcat 可創(chuàng)建的最大的線程數(shù),默認(rèn)值是 200。

【minSpareThreads】 最小空閑線程數(shù),Tomcat 啟動(dòng)時(shí)的初始化的線程數(shù),表示即使沒(méi)有人使用也開(kāi)這么多空線程等待,默認(rèn)值是 10。

【maxSpareThreads】 最大備用線程數(shù),一旦創(chuàng)建的線程超過(guò)這個(gè)值,Tomcat就會(huì)關(guān)閉不再需要的socket線程。默認(rèn)值是-1(無(wú)限制)。一般不需要指定。

【URIEncoding】 指定 Tomcat 容器的 URL 編碼格式,語(yǔ)言編碼格式這塊倒不如其它 Web服務(wù)器軟件配置方便,需要分別指定。

【connnectionTimeout】 網(wǎng)絡(luò)連接超時(shí),單位:毫秒,設(shè)置為 0 表示永不超時(shí),這樣設(shè)置有隱患的。通常默認(rèn) 20000 毫秒就可以。

【enableLookups】 是否反查域名,以返回遠(yuǎn)程主機(jī)的主機(jī)名,取值為:true 或 false,如果設(shè)置為 false,則直接返回 IP 地址,為了提高處理能力,應(yīng)設(shè)置為 false。

【disableUploadTimeout】 上傳時(shí)是否使用超時(shí)機(jī)制。應(yīng)設(shè)置為 true。

【connectionUploadTimeout】 上傳超時(shí)時(shí)間,畢竟文件上傳可能需要消耗更多的時(shí)間,這個(gè)根據(jù)你自己的業(yè)務(wù)需要自己調(diào),以使Servlet有較長(zhǎng)的時(shí)間來(lái)完成它的執(zhí)行,需要與上一個(gè)參數(shù)一起配合使用才會(huì)生效。

【acceptCount】 指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可傳入連接請(qǐng)求的最大隊(duì)列長(zhǎng)度,超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理,默認(rèn)為 100 個(gè)。

【compression】 是否對(duì)響應(yīng)的數(shù)據(jù)進(jìn)行GZIP壓縮,off:表示禁止壓縮;on:表示允許壓縮(文本將被壓縮)、force:表示所有情況下都進(jìn)行壓縮,默認(rèn)值為 off,壓縮數(shù)據(jù)后可以有效的減少頁(yè)面的大小,一般可以減小 1/3 左右,節(jié)省帶寬。

【compressionMinSize】 表示壓縮響應(yīng)的最小值,只有當(dāng)響應(yīng)報(bào)文大小大于這個(gè)值的時(shí)候才會(huì)對(duì)報(bào)文進(jìn)行壓縮,如果開(kāi)啟了壓縮功能,默認(rèn)值就是 2048。

【compressableMimeType】 壓縮類型,指定對(duì)哪些類型的文件進(jìn)行數(shù)據(jù)壓縮。

【noCompressionUserAgents=“gozilla, traviata”】 對(duì)于以下的瀏覽器,不啟用壓縮

以上是一些常用的配置參數(shù),還有好多其它的參數(shù)設(shè)置,還可以繼續(xù)深入的優(yōu)化,HTTP Connector 與 AJP Connector 的參數(shù)屬性值,可以參考官方文檔的詳細(xì)說(shuō)明進(jìn)行學(xué)習(xí)。

vim /usr/local/tomcat/conf/server.xml

<Connector port=“8080” protocol=“HTTP/11.1”
connectionTimeout=“20000”
redirectPort=“8443”
–71行–插入(上面的內(nèi)容僅供參考位置)
minSpareThreads=“50”
enableLookups=“false”
disableUploadTimeout=“true”
acceptCount=“300”
maxThreads=“500”
processorCache=“500”
URIEncoding=“UTF-8”
compression=“on”
compressionMinSize=“2048”
compressableMimeType=“text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png”/>

實(shí)際配置截圖:

總結(jié)

以上是生活随笔為你收集整理的Tomcat服务部署和优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。