常用應用伺服器——Tomcat的常用小技巧

博為峰網校發表於2022-03-21

Tomcat是常用的應用伺服器之一,主要用於開發和測試,也有少量使用者用在生產系統中。本文總結了一些Tomcat的常見問題及處理技巧,以供參考。 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

啟動問題

Windows下,在啟動Tomcat時經常會出現啟動視窗一閃而過,啟動失敗的情況,而日誌檔案中沒有任何錯誤提示。

此類問題多半是jvm引數或環境變數設定的問題,解決問題的關鍵是看到控制檯輸出的內容,但控制檯一閃而過,不知道哪裡出了問題。

Tomcat預設安裝後,bin目錄下的startup.bat檔案最下面是這樣的。

call "%EXECUTABLE%" start %CMD_LINE_ARGS%,這個命令執行時,會另啟動一個視窗,將start改成run後,啟動過程只有一個視窗,所有日誌都在這一個視窗中輸出了。

做了這個修改之後,就可以開啟一個cmd視窗,然後進入到bin目錄下,直接輸入starup.bat後,cmd視窗就會出現啟動的日誌輸出了,有什麼錯誤一目瞭然。如下圖所示:

Linux/unix/aix下的Tomcat啟動,不會出現上面的問題,因為控制檯日誌直接寫到了日誌檔案中,例如:/opt/tomcat/tomat/logs/catalina.out。

日誌問題

Windows下,Tomcat的日誌是輸出在控制檯上,這對於長期執行的生產系統來說是不合適的,因為很多日誌都被覆蓋,查詢問題時也不方便。可以透過下面的方法將控制檯日誌輸出到檔案中

直接修改bin下的startup.bat,將最後一行修改如下:

call "%EXECUTABLE%" run %CMD_LINE_ARGS% >> catalina.%date:~0,10%.out

按照上面的方法,Tomcat啟動後,會在bin目錄下生成2021-11-08.out之類的檔案,檔名以當前日期取名,如果一天內啟動多次,會以追加的方式寫到同一檔案中。

記憶體問題

Tomcat設定jvm記憶體大小,相信大家都會,但在實際運用時,經常會出現明明設定了記憶體引數,但是系統還是啟動不起來,報記憶體溢位錯誤。

Tomcat有很多設定jvm引數的方法,可以修改catalina.bat命令檔案,也可以設定環境變數JAVA_OPTS,實際當中可能設定了多處,最終到底哪個生效了,自己都弄糊塗了。

對於這種問題,只要做個簡單的測試就清楚了。修改一下你設定的jvm引數,將引數設定的特殊一些,例如正常設定是-Xms256m –Xmx1024m –XX:MaxPermSize=256m。

為了驗證這個設定是否真正生效,可以這樣設定:-Xms20480m -Xmx20480m -XX:MaxPermSize=256m(設定最小值超過實體記憶體)。

如果Tomcat啟動丟擲記憶體設定過大的錯誤,則說明你設定的jvm引數生效了,否則說明Tomcat沒有使用你設定的jvm引數,此時就需要檢查相關檔案或環境變數中是否有設定jvm,繼續檢查到底使用的是哪一個。

對於Tomcat設定jvm引數這個問題,建議在catalina.bat(或catalina.sh)中進行設定,不要在環境變數中設定,因為環境變數是全域性性的,可能會影響到其它Tomcat程式。  Linux下問題

在Linux下使用Tomcat,和Windwos下沒有太大區別,但在實際專案中,也曾遇到過一些問題。

jvm引數無法識別問題

明明在catalina.sh中設定了jvm引數,但是無論怎麼檢查測試,就是不生效,後來發現jvm引數應該用雙引號引起來才能生效:

JAVA_HOME=/root/jre1.8.0_181

JAVA_OPTS="-Xms512m -Xmx1536m -XX:MaxPermSize=256m"。

JAVA_OPTS引數中由於有空格,所以必須用雙引號引起來,JAVA_HOME由於沒有空格,所以可以不用雙引號。在linux下的weblogic中也有類似問題。

context路徑問題

在Windows下,配置context路徑通常按照以下方法,例如,在

Tomcat \conf\Catalina\localhost\下,新建一個test.xml檔案,檔案內容如下:

<Context path="/testxn" docBase="/opt/tomcat/testapp"

debug="0" privileged="true">

<!-- Link to the user database we will get roles from -->

<ResourceLink name="users" global="UserDatabase"

type="org.apache.catalina.UserDatabase"/>

</Context>

Tomcat啟動後,透過即可以訪問系統。

然而在linux系統中,同樣是按照上面的配置,透過上面的地址卻訪問不了,提示404錯誤,後來無意間發現,透過

可以訪問系統,context路徑竟然和配置檔案的名稱(test.xml)保持一致,這個問題比較奇怪,只是發現了這個規律,具體原因尚不清楚。

小結

本文僅針對日常專案實施和開發測試過程中,Tomcat出現的一些常見問題進行了總結,關於Tomcat的其他使用技巧還有很多,希望大家可以多多總結多多分享。

最後:

可以我的個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的影片學習教程免費分享!,其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。

這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2879029/,如需轉載,請註明出處,否則將追究法律責任。

相關文章