Tomcatl介紹
目前成都創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站改版維護、企業(yè)網(wǎng)站設(shè)計、葉集網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn),Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規(guī)范。因為Tomcat 技術(shù)先進、性能穩(wěn)定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的Web 應(yīng)用服務(wù)器。
Tomcat組件及其特點
tomcat組件
servlet(應(yīng)用程序或者容器)是java提供的用于開發(fā)web服務(wù)器應(yīng)用程序的一個組件,運行在服務(wù)器端,有servlet用于生成動態(tài)頁面內(nèi)容,servlet是平臺立的java類,編寫一個servlet,實際上就是安裝servlet規(guī)范編寫一個java類
配置Tomcat虛擬主機和優(yōu)化
案例需求
1)部署 Tomcat 服務(wù)。
2)配置虛擬主機。
3)Tomcat 優(yōu)化。
4)常見錯誤分析及處理。
案例實現(xiàn)思路
1)安裝 Tomcat 需要的環(huán)境。
2)安裝 Tomcat 服務(wù)。
3)配置虛擬主機。
4)客戶端安裝壓測軟件進行壓測并調(diào)優(yōu)。
5)常見錯誤說明。
實驗過程
1.下載并安裝 JDK,部署Tomcat服務(wù)
詳情可查看:https://blog.51cto.com/14557905/2464661
2.查看 Tomcat 安裝后目錄結(jié)構(gòu)
1)bin
存放啟動和關(guān)閉 Tomcat 的腳本文件, 比較常用的是 catalina.sh、startup.sh、shutdown.sh 三個文件。
2)conf
存放 Tomcat 服務(wù)器的各種配置文件,比較常用的是 server.xml、context..xml、tomcat-users.xml、web.xml 四個文件。
3)lib
存放 Tomcat 服務(wù)器的 jar 包,一般不作任何改動,除非連接第三方服務(wù),比如 redis, 那就需要添加相對應(yīng)的 jar 包。
4)logs
存放 Tomcat 日志。
5)temp
存放 Tomcat 運行時產(chǎn)生的文件。
6)webapps
存放項目資源的目錄。
7)work
Tomcat 工作目錄,一般清除 Tomcat 緩存的時候會使用到。
二、虛擬主機配置
可能有時候公司會有多個項目需要運行,那么肯定不可能是一臺服務(wù)器上運行多個Tomcat 服務(wù),這樣會消耗太多的系統(tǒng)資源。此時,就需要使用到 Tomcat 虛擬主機。例如現(xiàn)在新增兩個域名 www.test.com 和 bbs.test.com,希望通過這兩個域名訪問到不同的項目內(nèi)容。
1.創(chuàng)建 www 和 bbs 項目目錄和文件
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/www
[root@localhost ~]# echo "This is www page\!" > /usr/local/tomcat/webapps/www/index.jsp
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/bbs
[root@localhost ~]# echo "This is bbs page\!" > /usr/local/tomcat/webapps/bbs/index.jsp
2.修改 Tomcat 主配置文件
修改 Tomcat 主配置文件/usr/local/tomcat/conf/server.xml,在</Host>下面增加如下內(nèi)容:
//關(guān)于 www.test.com 的虛擬主機配置
<Hostname="www.test.com"appBase="/usr/local/tomcat/webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/www"
path="" reloadable="true" />
</Host>
//關(guān)于 bbs.test.com 的虛擬主機配置
<Host name="bbs.test.com" appBase="/usr/local/tomcat/webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/bbs"
path="" reloadable="true" />
</Host>
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
3.測試
客戶端綁定兩個域名需要寫入本機 hosts,Tomcat 默認端口是 8080。
192.168.9.236 www.test.com
192.168.9.236 bbs.test.com
三、Tomcat 優(yōu)化
Tomcat 的缺省配置并不適合生產(chǎn)環(huán)境,它會頻繁出現(xiàn)假死現(xiàn)象需要重啟,只有通過不斷壓測優(yōu)化才能讓它最高效率穩(wěn)定的運行。優(yōu)化主要有三方面,分為操作系統(tǒng)優(yōu)化(內(nèi)核參數(shù)優(yōu)化),Tomcat 配置文件參數(shù)優(yōu)化,Java 虛擬機(JVM)調(diào)優(yōu)。其中最難理解的就是 jvm調(diào)優(yōu)。
1.Tomcat 配置文件參數(shù)優(yōu)化
關(guān)于 Tomcat 主配置文件 server.xml 里面很多默認的配置項,但并不能滿足業(yè)務(wù)需求, 常用的優(yōu)化相關(guān)參數(shù)如下。
如果已經(jīng)對代碼進行了動靜分離,靜態(tài)頁面和圖片等數(shù)據(jù)就不需要 Tomcat 處理了,那么也就不需要在 Tomcat 中配置壓縮了。因為這里只有一臺 Tomcat 服務(wù)器,而且壓測的是Tomcat 首頁,會有圖片和靜態(tài)資源文件,所以這里啟用壓縮。
三、以上是一些常用的配置參數(shù),還有好多其它的參數(shù)設(shè)置,還可以繼續(xù)深入的優(yōu)化,HTTP Connector 與 AJP Connector 的參數(shù)屬性值,可以參考官方文檔的詳細說明進行學(xué)習(xí)。鏈接 地 址 http://tomcat.apache.org/tomcat-9.0-doc/config/http.html , 下 面 開 始 對Tomcat 配置文件優(yōu)化進行前后的對比。
壓測腳本里設(shè)置的是 20 秒啟動 4000 個線程數(shù),并發(fā)為 2000,超時時間是 50000 毫秒。也可以適當?shù)母鶕?jù)自己的需求進行修改。為了不那么復(fù)雜,從壓測結(jié)果看只關(guān)注聚合報告, 聚合報告只關(guān)注 Average、90% Line、Error%這三列,因為壓測 Tomcat 首頁壓力不會太大, 所以 Error 都是為 0 屬于正常。先看一組優(yōu)化前(默認的配置)壓測截圖
打開 Tomcat 主配置文件 server.xml,找到默認配置:
<Connector port="8080" protocol="HTTP/11.1" connectionTimeout="20000"
redirectPort="8443" />
將默認配置做修改:
<Connector port="8080" protocol="HTTP/11.1"
connectionTimeout="20000"
redirectPort="8443" 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"/>
重新啟動 Tomcat 服務(wù)器,jmeter 還是繼續(xù)保持同樣的參數(shù)進行壓測,優(yōu)化后壓測截圖
常見錯誤說明
1.java.lang.OutOfMemoryError: Java heap space——JVM Heap(堆)溢出
JVM 在啟動的時候會自動設(shè)置 JVM Heap 的值,其初始空間(即-Xms)是物理內(nèi)存的 1/64,最大空間(-Xmx)不可超過物理內(nèi)存。可以利用 JVM 提供的 -Xmn -Xms -Xmx 等選項可進行設(shè)置。Heap 的大小是 Young Generation 和 Tenured Generaion 之和。在 JVM 中如果 98% 的時間是用于 GC,且可用的 Heap size 不足 2%的時候?qū)伋龃水惓P畔ⅰ?/p>
解決方法:手動設(shè)置 JVM Heap(堆)的大小。
2.java.lang.OutOfMemoryError: PermGen space——PermGen space 溢出
PermGen space 的全稱是 Permanent Generation space,是指內(nèi)存的永久保存區(qū)域。為什么會內(nèi)存溢出,這是由于這塊內(nèi)存主要是被 JVM 存放 Class 和 Meta 信息的,Class 在被 Load 的時候被放入 PermGen space 區(qū)域,它和存放 Instance 的 Heap 區(qū)域不同,sun 的GC 不會在主程序運行期對 PermGen space 進行清理。所以,如果你的 APP 會載入很多 CLASS 的話,就很可能出現(xiàn) PermGen space 溢出。
解決方法:手動設(shè)置 MaxPermSize 大小。
3.java.lang.StackOverflowError——棧溢出
JVM 依然是采用棧式的虛擬機,這個和 C 與 Pascal 都是一樣的。函數(shù)的調(diào)用過程都體現(xiàn)在堆棧和退棧上了。調(diào)用構(gòu)造函數(shù)的“層”太多了,以致于把棧區(qū)溢出了。通常來講,一 般棧區(qū)遠遠小于堆區(qū)的,因為函數(shù)調(diào)用過程往往不會多于上千層,而即便每個函數(shù)調(diào)用需要 1K 的空間(這個大約相當于在一個 C 函數(shù)內(nèi)聲明了 256 個 int 類型的變量),那么棧區(qū)也不過是需要 1MB 的空間。通常棧的大小是 1-2MB 的。
通常遞歸也不要遞歸的層次過多,很容易溢出。 解決方法:修改程序。
名稱欄目:配置Tomcat虛擬主機和優(yōu)化Tomcat
網(wǎng)頁URL:http://chinadenli.net/article10/gjojgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、微信小程序、手機網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、搜索引擎優(yōu)化、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)