常用應用伺服器——Tomcat的常用小技巧
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視窗就會出現啟動的日誌輸出了,有什麼錯誤一目瞭然。如下圖所示:
日誌問題
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 常用的CSS小技巧CSS
- Tomcat 實用小技巧Tomcat
- 30個Python常用小技巧Python
- 常用的一些javascript小技巧JavaScript
- 深入 TypeScript – 2( 幾個常用的小技巧)TypeScript
- Laravel 9 個不經常用的小技巧Laravel
- 常用技巧
- 我常用的MacOS應用Mac
- Docker常用的應用部署Docker
- CSS 常用技巧CSS
- 【Idea】常用技巧Idea
- [Idea] 常用技巧Idea
- JS 常用技巧JS
- Tomcat常用優化配置Tomcat優化
- 改進c#程式碼的5個常用的小技巧C#
- 常用JavaScript的高階技巧JavaScript
- 程式常用的設計技巧
- 【CSS】CSS常用技巧CSS
- [Unity]常用技巧收集Unity
- css常用技巧梳理CSS
- 伺服器應用技巧伺服器
- 50個工作中最常用excel技巧 excel常用技巧大全Excel
- iOS開發常用小技巧記錄(持續更新)iOS
- 捷訊技術分享雲伺服器ECS常用的應用場景?伺服器
- Linux伺服器效能最佳化有哪些常用技巧?Linux伺服器
- HCIA—應用層常用協議協議
- Java應用伺服器之tomcat部署Java伺服器Tomcat
- JS常用簡寫技巧JS
- iView常用元件清空技巧View元件
- LinuxShell常用技巧(目錄)Linux
- JS 常用簡寫技巧JS
- 常用HTTP抓包工具Fiddler使用的12個小技巧,值得收藏!HTTP
- 如何有效防範網路攻擊?常用小技巧分享!
- IntelliJIDEA最常用配置,應用、永久啟用IntelliJIdea
- async/await 非同步應用的常用場景AI非同步
- JavaScript常用的簡潔高階技巧JavaScript
- Transformers 加速的一些常用技巧ORM
- Nginx的幾個常用配置和技巧Nginx