首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Tomcat 獨立部署 WAR 檔常見問題與解決方案

     編輯:程式設計疑難解答

問題一:Tomcat 啟動方式

Tomcat 在無 Eclipse 等 IDE 環境下獨立啟動,主要透過 bin/startup.bat (Windows) 或 bin/startup.sh (Linux) 執行。實際上所有啟動方式最終都會呼叫此腳本,亦可將其註冊為 Windows 服務 (service.bat install) 實現開機自啟與背景執行。

問題二:啟動閃退與 hs_err_pid 日誌

現象:執行 startup.bat 視窗一閃即關,bin 目錄產生 hs_err_pidxxxx.log (約 140MB)。

常見原因

  • JVM 記憶體設定不足:30MB WAR 解壓後類別、依賴庫可能需更大 Heap/Metaspace
  • 雲伺服器資源限制:低配雲主機 (1 vCPU/1GB RAM) 易觸發 OOM 或原生記憶體耗盡
  • JDK 與 Tomcat 版本不匹配:如 JDK 17 搭配 Tomcat 8.5
  • 端口衝突:8080 被佔用導致 Bind 失敗

解決步驟

  1. 檢查 logs/catalina.out 或 logs/commons-daemon.log 獲取真實堆疊追蹤
  2. 調整 bin/setenv.bat (需自建):
    set CATALINA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m
    
  3. 若為雲主機,建議升級規格或啟用 Swap
  4. 關閉 hs_err_pid 生成 (不建議生產環境):
    -XX:-CreateErrorFile
    

雲端部署額外注意事項

  • 安全群組/防火牆需開放 8080 (或自訂埠)
  • 使用 Nginx 反向代理至 80/443 埠
  • 配置 context.xml 或 server.xml 設定資料庫連線池 (JNDI)
  • 定期清理 work/、temp/、logs/ 釋放磁碟空間
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved