Tomcatl介紹
目前成都創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網站建設、域名、網絡空間、網站改版維護、企業(yè)網站設計、葉集網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(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 技術先進、性能穩(wěn)定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的Web 應用服務器。
Tomcat組件及其特點
tomcat組件
servlet(應用程序或者容器)是java提供的用于開發(fā)web服務器應用程序的一個組件,運行在服務器端,有servlet用于生成動態(tài)頁面內容,servlet是平臺立的java類,編寫一個servlet,實際上就是安裝servlet規(guī)范編寫一個java類
配置Tomcat虛擬主機和優(yōu)化
案例需求
1)部署 Tomcat 服務。
2)配置虛擬主機。
3)Tomcat 優(yōu)化。
4)常見錯誤分析及處理。
案例實現(xiàn)思路
1)安裝 Tomcat 需要的環(huán)境。
2)安裝 Tomcat 服務。
3)配置虛擬主機。
4)客戶端安裝壓測軟件進行壓測并調優(yōu)。
5)常見錯誤說明。
實驗過程
1.下載并安裝 JDK,部署Tomcat服務
詳情可查看:https://blog.51cto.com/14557905/2464661
2.查看 Tomcat 安裝后目錄結構
1)bin
存放啟動和關閉 Tomcat 的腳本文件, 比較常用的是 catalina.sh、startup.sh、shutdown.sh 三個文件。
2)conf
存放 Tomcat 服務器的各種配置文件,比較常用的是 server.xml、context..xml、tomcat-users.xml、web.xml 四個文件。
3)lib
存放 Tomcat 服務器的 jar 包,一般不作任何改動,除非連接第三方服務,比如 redis, 那就需要添加相對應的 jar 包。
4)logs
存放 Tomcat 日志。
5)temp
存放 Tomcat 運行時產生的文件。
6)webapps
存放項目資源的目錄。
7)work
Tomcat 工作目錄,一般清除 Tomcat 緩存的時候會使用到。
二、虛擬主機配置
可能有時候公司會有多個項目需要運行,那么肯定不可能是一臺服務器上運行多個Tomcat 服務,這樣會消耗太多的系統(tǒng)資源。此時,就需要使用到 Tomcat 虛擬主機。例如現(xiàn)在新增兩個域名 www.test.com 和 bbs.test.com,希望通過這兩個域名訪問到不同的項目內容。
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.jsp2.修改 Tomcat 主配置文件
修改 Tomcat 主配置文件/usr/local/tomcat/conf/server.xml,在</Host>下面增加如下內容:
//關于 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>
//關于 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.sh3.測試
客戶端綁定兩個域名需要寫入本機 hosts,Tomcat 默認端口是 8080。
192.168.9.236 www.test.com
192.168.9.236 bbs.test.com

三、Tomcat 優(yōu)化
Tomcat 的缺省配置并不適合生產環(huán)境,它會頻繁出現(xiàn)假死現(xiàn)象需要重啟,只有通過不斷壓測優(yōu)化才能讓它最高效率穩(wěn)定的運行。優(yōu)化主要有三方面,分為操作系統(tǒng)優(yōu)化(內核參數(shù)優(yōu)化),Tomcat 配置文件參數(shù)優(yōu)化,Java 虛擬機(JVM)調優(yōu)。其中最難理解的就是 jvm調優(yōu)。
1.Tomcat 配置文件參數(shù)優(yōu)化
關于 Tomcat 主配置文件 server.xml 里面很多默認的配置項,但并不能滿足業(yè)務需求, 常用的優(yōu)化相關參數(shù)如下。
如果已經對代碼進行了動靜分離,靜態(tài)頁面和圖片等數(shù)據(jù)就不需要 Tomcat 處理了,那么也就不需要在 Tomcat 中配置壓縮了。因為這里只有一臺 Tomcat 服務器,而且壓測的是Tomcat 首頁,會有圖片和靜態(tài)資源文件,所以這里啟用壓縮。
三、以上是一些常用的配置參數(shù),還有好多其它的參數(shù)設置,還可以繼續(xù)深入的優(yōu)化,HTTP Connector 與 AJP Connector 的參數(shù)屬性值,可以參考官方文檔的詳細說明進行學習。鏈接 地 址 http://tomcat.apache.org/tomcat-9.0-doc/config/http.html , 下 面 開 始 對Tomcat 配置文件優(yōu)化進行前后的對比。
壓測腳本里設置的是 20 秒啟動 4000 個線程數(shù),并發(fā)為 2000,超時時間是 50000 毫秒。也可以適當?shù)母鶕?jù)自己的需求進行修改。為了不那么復雜,從壓測結果看只關注聚合報告, 聚合報告只關注 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 服務器,jmeter 還是繼續(xù)保持同樣的參數(shù)進行壓測,優(yōu)化后壓測截圖
常見錯誤說明
1.java.lang.OutOfMemoryError: Java heap space——JVM Heap(堆)溢出
JVM 在啟動的時候會自動設置 JVM Heap 的值,其初始空間(即-Xms)是物理內存的 1/64,最大空間(-Xmx)不可超過物理內存。可以利用 JVM 提供的 -Xmn -Xms -Xmx 等選項可進行設置。Heap 的大小是 Young Generation 和 Tenured Generaion 之和。在 JVM 中如果 98% 的時間是用于 GC,且可用的 Heap size 不足 2%的時候將拋出此異常信息。
解決方法:手動設置 JVM Heap(堆)的大小。
2.java.lang.OutOfMemoryError: PermGen space——PermGen space 溢出
PermGen space 的全稱是 Permanent Generation space,是指內存的永久保存區(qū)域。為什么會內存溢出,這是由于這塊內存主要是被 JVM 存放 Class 和 Meta 信息的,Class 在被 Load 的時候被放入 PermGen space 區(qū)域,它和存放 Instance 的 Heap 區(qū)域不同,sun 的GC 不會在主程序運行期對 PermGen space 進行清理。所以,如果你的 APP 會載入很多 CLASS 的話,就很可能出現(xiàn) PermGen space 溢出。
解決方法:手動設置 MaxPermSize 大小。
3.java.lang.StackOverflowError——棧溢出
JVM 依然是采用棧式的虛擬機,這個和 C 與 Pascal 都是一樣的。函數(shù)的調用過程都體現(xiàn)在堆棧和退棧上了。調用構造函數(shù)的“層”太多了,以致于把棧區(qū)溢出了。通常來講,一 般棧區(qū)遠遠小于堆區(qū)的,因為函數(shù)調用過程往往不會多于上千層,而即便每個函數(shù)調用需要 1K 的空間(這個大約相當于在一個 C 函數(shù)內聲明了 256 個 int 類型的變量),那么棧區(qū)也不過是需要 1MB 的空間。通常棧的大小是 1-2MB 的。
通常遞歸也不要遞歸的層次過多,很容易溢出。 解決方法:修改程序。
名稱欄目:配置Tomcat虛擬主機和優(yōu)化Tomcat
網頁URL:http://www.chinadenli.net/article10/gjojgo.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網站、微信小程序、手機網站建設、網站設計公司、搜索引擎優(yōu)化、全網營銷推廣
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)