Apache Tomcat 作為最流行的 Servlet 容器,憑藉輕量級、穩定且開源的特性,成為 Java Web 開發的首選。只要配置得當,Tomcat 能完美適應從開發測試到生產環境的各種需求。本文摘錄自《Tomcat 權威指南》,精選 10 大實戰配置技巧,助你輕鬆駕馭 Tomcat。
Tomcat 內建成熟的 Admin Web Application,功能不遜商業 J2EE 伺服器。自 4.1 版起支援 Context、DataSource、用戶/群組及初始化參數管理,後續版本持續擴展。
CATALINA_BASE/webapps/admin.xml,確保 docBase 為絕對路徑(指向 CATALINA_HOME/server/webapps/admin)。UserDatabaseRealm,需在 CATALINA_BASE/conf/tomcat-users.xml 新增管理角色與用戶:
<role name="admin"/>
<user name="admin" password="your_secure_password" roles="admin"/>
https://localhost:8080/admin 即可登入基於 Struts 框架的管理介面。Manager Web Application 提供更輕量的 Web 操作介面,支援應用部署、啟停、重載與移除。
CATALINA_BASE/webapps/manager.xml,設定 docBase 為 CATALINA_HOME/server/webapps/manager 絕對路徑。tomcat-users.xml 添加 manager 角色與用戶:<role name="manager"/> <user name="manager" password="secret" roles="manager"/>https://localhost/manager/html/list 即見 HTML 管理頁。實用操作: 可透過「Config URL」欄位指定 file:/path/to/app 熱部署應用;「停止」應用會返回 503 錯誤;「移除」僅從運行時移除,重啟後自動恢復。
$CATALINA_BASE/webapps,Tomcat 會自動偵測部署。server.xml 的 <Host> 內定義 <Context>,可精確控制路徑、資源連結等進階選項。server.xml 中啟用 NIO 或 APR 連接器,調整 maxThreads、acceptCount、connectionTimeout。-Xms -Xmx 避免頻繁 GC,啟用 -XX:+UseG1GC 降低延遲。DefaultServlet 的 cacheMaxSize、cacheTTL 減少磁碟 I/O。ROOT、docs、examples 應用。listings(目錄瀏覽)與 debug 模式。RemoteAddrValve 限制管理介面僅允許內網 IP 存取。SSLHostConfig 與 Certificate,強制重導向 HTTP 流量。log4j2 或 Logback 替換預設 JULI,實現滾動、分級、非同步寫入。Micrometer + Prometheus 暴露 /metrics,監控執行緒池、請求延遲、錯誤率。AccessLogValve 記錄完整存取日誌,格式包含 %{X-Forwarded-For}i 以支援反向代理。配置 <Cluster> 使用 DeltaManager 或 BackupManager 實現 Session 複寫;搭配 JvmRoute 與負載平衡器(如 Nginx、mod_jk)實現黏性 Session。
在 context.xml 定義 <Resource> 類型為 javax.sql.DataSource,設定 maxTotal、maxIdle、minIdle、validationQuery、testOnBorrow;生產環境建議使用 HikariCP 替換預設 DBCP2。
設定獨立 CATALINA_BASE 目錄結構(conf、logs、webapps、work、temp),共享 CATALINA_HOME 二進制檔,透過不同 shutdown、HTTP、AJP 埠口運行多實例,實現資源隔離與獨立升級。
jstack 分析執行緒堆疊,定位死鎖與 CPU 熱點。jmap -histo:live 觀察記憶體物件分佈,配合 MAT 分析 Heap Dump。JMX 遠程監控,搭配 VisualVM 或 JConsole 即時觀測。掌握這 10 大技巧,能讓 Tomcat 在穩定性、安全性與效能上達到生產級水準。建議結合官方文檔與實際業務場景持續微調,打造高可用的 Java Web 運行環境。