Tomcat的日志是故障排查的核心依據,關鍵日志文件位于$TOMCAT_HOME/logs
目錄下,包括:
tail -f $TOMCAT_HOME/logs/catalina.out
通過日志中的錯誤關鍵詞(如"Port already in use"、“OutOfMemoryError”、“Parse error in application web.xml”)可快速定位問題類型。
Tomcat依賴Java運行環境,需確保以下配置正確:
java -version
若未安裝或版本不符,需通過yum install java-11-openjdk
(CentOS默認倉庫)或官網下載安裝包安裝。JAVA_HOME
指向正確的JDK路徑(如/usr/lib/jvm/java-11-openjdk
),并在/etc/profile
或~/.bashrc
中添加:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
執行source /etc/profile
使配置生效。Tomcat的核心配置文件位于$TOMCAT_HOME/conf
目錄,常見錯誤及排查方法:
<Connector>
標簽的端口配置(默認8080),確保無語法錯誤(如標簽未閉合);若端口沖突,修改為其他端口(如8081)并重啟Tomcat。<servlet-mapping>
的url-pattern格式)。<Resource>
標簽的url
、username
、password
是否正確)。$TOMCAT_HOME/bin/shutdown.sh
$TOMCAT_HOME/bin/startup.sh
Tomcat運行需要足夠的系統資源,若資源不足會導致啟動失敗或響應緩慢:
free -m
查看內存剩余量,若剩余內存不足(如小于1GB),需調整Tomcat的JVM內存參數(見“調整JVM內存參數”部分)。df -h
查看磁盤剩余空間,若/
分區剩余空間小于10%,需清理舊日志(如catalina.out
)或臨時文件。top
查看CPU使用率,若某進程占用過高(如超過80%),需終止異常進程(kill -9 PID
)或優化應用代碼。Tomcat默認使用8080端口(HTTP)、8005端口(SHUTDOWN)、8009端口(AJP),若端口被其他進程占用,會導致啟動失?。?/p>
netstat -tuln | grep 8080
# 或推薦使用ss命令(更高效)
ss -tunlp | grep 8080
輸出結果中的PID/Program name
字段標識了占用端口的進程(如1234/java
)。kill -9 PID # 替換為實際的PID
server.xml
文件,更改<Connector>
標簽的port
屬性(如將8080改為8081)。CentOS的防火墻(firewalld)和SELinux可能阻止Tomcat的外部訪問:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
使用sudo firewall-cmd --list-all
驗證端口是否已放行。sestatus
顯示Enforcing
),可能阻止Tomcat綁定端口??膳R時禁用SELinux(測試用):sudo setenforce 0
若禁用后問題解決,可修改/etc/selinux/config
文件,將SELINUX=enforcing
改為SELINUX=disabled
,并重啟系統使變更生效。若Tomcat啟動成功但應用無法訪問(如訪問http://localhost:8080/app
返回404或500錯誤),需排查應用部署問題:
$TOMCAT_HOME/webapps
目錄(如app.war
或app
文件夾存在)。$TOMCAT_HOME/logs/localhost.<date>.log
文件,定位應用初始化錯誤(如數據庫驅動缺失、Spring配置文件錯誤)。$TOMCAT_HOME/work
目錄(Tomcat編譯后的臨時文件),然后重啟Tomcat。若日志中出現java.lang.OutOfMemoryError
(如Java heap space
、PermGen space
),需調整JVM內存參數:
$TOMCAT_HOME/bin/catalina.sh
,在文件開頭添加以下參數(根據服務器內存調整值):export JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
參數說明:
-Xms
:初始堆內存大?。ㄈ?12MB);-Xmx
:最大堆內存大?。ㄈ?024MB);-XX:MetaspaceSize
:初始元空間大?。↗ava 8+替代永久代);-XX:MaxMetaspaceSize
:最大元空間大小。