溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

配置Tomcat虛擬主機和優化Tomcat

發布時間:2020-06-10 13:02:20 來源:億速云 閱讀:394 作者:元一 欄目:云計算

Tomcatl介紹

Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規范總是能在Tomcat 中得到體現,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規范。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。

Tomcat組件及其特點

tomcat組件

servlet(應用程序或者容器)是java提供的用于開發web服務器應用程序的一個組件,運行在服務器端,有servlet用于生成動態頁面內容,servlet是平臺立的java類,編寫一個servlet,實際上就是安裝servlet規范編寫一個java類

配置Tomcat虛擬主機和優化
案例需求
1)部署 Tomcat 服務。
2)配置虛擬主機。
3)Tomcat 優化。
4)常見錯誤分析及處理。
案例實現思路
1)安裝 Tomcat 需要的環境。
2)安裝 Tomcat 服務。
3)配置虛擬主機。
4)客戶端安裝壓測軟件進行壓測并調優。
5)常見錯誤說明。
實驗過程
1.下載并安裝 JDK,部署Tomcat服務
詳情可查看:https://blog.51cto.com/14557905/2464661
2.查看 Tomcat 安裝后目錄結構
配置Tomcat虛擬主機和優化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 服務,這樣會消耗太多的系統資源。此時,就需要使用到 Tomcat 虛擬主機。例如現在新增兩個域名 www.test.com 和 bbs.test.com,希望通過這兩個域名訪問到不同的項目內容。
1.創建 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>下面增加如下內容:

//關于 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.sh

3.測試
客戶端綁定兩個域名需要寫入本機 hosts,Tomcat 默認端口是 8080。
192.168.9.236   www.test.com
192.168.9.236   bbs.test.com
配置Tomcat虛擬主機和優化Tomcat
配置Tomcat虛擬主機和優化Tomcat
三、Tomcat 優化
Tomcat 的缺省配置并不適合生產環境,它會頻繁出現假死現象需要重啟,只有通過不斷壓測優化才能讓它最高效率穩定的運行。優化主要有三方面,分為操作系統優化(內核參數優化),Tomcat 配置文件參數優化,Java 虛擬機(JVM)調優。其中最難理解的就是 jvm調優。
1.Tomcat 配置文件參數優化
關于 Tomcat 主配置文件 server.xml 里面很多默認的配置項,但并不能滿足業務需求, 常用的優化相關參數如下。

  • maxThreads:Tomcat 使用線程來處理接收的每個請求,這個值表示 Tomcat 可創建的最大的線程數,默認值是 200。
  • minSpareThreads:最小空閑線程數,Tomcat 啟動時的初始化的線程數,表示即使沒有人使用也開這么多空線程等待,默認值是 10。
  • maxSpareThreads:最大備用線程數,一旦創建的線程超過這個值,Tomcat 就會關閉不再需要的 socket 線程。默認值是-1(無限制)。一般不需要指定。
  • URIEncoding:指定 Tomcat 容器的 URL 編碼格式,語言編碼格式這塊倒不如其它 Web 服務器軟件配置方便,需要分別指定。
  • connnectionTimeout:網絡連接超時,單位:毫秒,設置為 0 表示永不超時,這樣設置有隱患的。通常默認 20000 毫秒就可以。
  • enableLookups:是否反查域名,以返回遠程主機的主機名,取值為:true 或 false, 如果設置為 false,則直接返回 IP 地址,為了提高處理能力,應設置為 false。
  • disableUploadTimeout:上傳時是否使用超時機制。應設置為 true。
  • connectionUploadTimeout:上傳超時時間,畢竟文件上傳可能需要消耗更多的時間, 這個根據你自己的業務需要自己調,以使 Servlet 有較長的時間來完成它的執行,需要與上一個參數一起配合使用才會生效。
  • acceptCount:指定當所有可以使用的處理請求的線程數都被使用時,可傳入連接請求的最大隊列長度,超過這個數的請求將不予處理,默認為 100 個。
  • compression:是否對響應的數據進行 GZIP 壓縮,off:表示禁止壓縮;on:表示允許壓縮(文本將被壓縮)、force:表示所有情況下都進行壓縮,默認值為 off,壓縮數據后可以有效的減少頁面的大小,一般可以減小 1/3 左右,節省帶寬。
  • compressionMinSize:表示壓縮響應的最小值,只有當響應報文大小大于這個值的時候才會對報文進行壓縮,如果開啟了壓縮功能,默認值就是 2048。
  • compressableMimeType:壓縮類型,指定對哪些類型的文件進行數據壓縮。
    noCompressionUserAgents="gozilla, traviata":對于以下的瀏覽器,不啟用壓縮。

如果已經對代碼進行了動靜分離,靜態頁面和圖片等數據就不需要 Tomcat 處理了,那么也就不需要在 Tomcat 中配置壓縮了。因為這里只有一臺 Tomcat 服務器,而且壓測的是Tomcat 首頁,會有圖片和靜態資源文件,所以這里啟用壓縮。
三、以上是一些常用的配置參數,還有好多其它的參數設置,還可以繼續深入的優化,HTTP Connector 與 AJP Connector 的參數屬性值,可以參考官方文檔的詳細說明進行學習。鏈接 地 址 http://tomcat.apache.org/tomcat-9.0-doc/config/http.html , 下 面 開 始 對Tomcat 配置文件優化進行前后的對比。
壓測腳本里設置的是 20 秒啟動 4000 個線程數,并發為 2000,超時時間是 50000 毫秒。也可以適當的根據自己的需求進行修改。為了不那么復雜,從壓測結果看只關注聚合報告, 聚合報告只關注 Average、90% Line、Error%這三列,因為壓測 Tomcat 首頁壓力不會太大, 所以 Error 都是為 0 屬于正常。先看一組優化前(默認的配置)壓測截圖
配置Tomcat虛擬主機和優化Tomcat
打開 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 還是繼續保持同樣的參數進行壓測,優化后壓測截圖
配置Tomcat虛擬主機和優化Tomcat
常見錯誤說明
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,是指內存的永久保存區域。為什么會內存溢出,這是由于這塊內存主要是被 JVM 存放 Class 和 Meta 信息的,Class 在被 Load 的時候被放入 PermGen space 區域,它和存放 Instance 的 Heap 區域不同,sun 的GC 不會在主程序運行期對 PermGen space 進行清理。所以,如果你的 APP 會載入很多 CLASS 的話,就很可能出現 PermGen space 溢出。

解決方法:手動設置 MaxPermSize 大小。

3.java.lang.StackOverflowError——棧溢出

JVM 依然是采用棧式的虛擬機,這個和 C 與 Pascal 都是一樣的。函數的調用過程都體現在堆棧和退棧上了。調用構造函數的“層”太多了,以致于把棧區溢出了。通常來講,一   般棧區遠遠小于堆區的,因為函數調用過程往往不會多于上千層,而即便每個函數調用需要   1K 的空間(這個大約相當于在一個 C 函數內聲明了 256 個 int 類型的變量),那么棧區也不過是需要 1MB 的空間。通常棧的大小是 1-2MB 的。
通常遞歸也不要遞歸的層次過多,很容易溢出。 解決方法:修改程序。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女