領先一步
VMware 提供培訓和認證,以加速您的進展。
瞭解更多幾週前,Filip Hanik 和我舉辦了關於 Apache Tomcat 優化與調校系列網路研討會的第二場。網路研討會的錄影和投影片副本可以從 SpringSource 網站的網路研討會專區取得。同一個頁面也提供所有先前 SpringSource 網路研討會的連結,以及 Covalent 網路研討會檔案庫。
在問答環節中,我們無法回答所有的問題,因此,如同承諾的,以下是剩餘的問題和我們的答案。
您幾乎肯定需要使用效能分析器來識別記憶體洩漏的根本原因。最新的 Sun JDK 包含 jhat 和 jmap 等工具。還有許多其他可用的效能分析器,包括免費和商業版本。Filip 和我在調查 Tomcat 記憶體洩漏時使用 YourKit,因為 YourKit 為開源開發人員提供免費授權。
這通常發生在 Tomcat 載入的類別保留了對 Web 應用程式載入的類別的參考時。當 Web 應用程式停止時,Tomcat 類別載入器會繼續保留對 Web 應用程式載入的類別的參考。這個類別會保留對 Web 應用程式的類別載入器的參考,而後者又保留對其載入的所有類別的參考。因此,Web 應用程式類別載入器及其載入的所有類別都不符合垃圾回收的條件。這會導致記憶體洩漏。典型的根本原因包括 JDBC 驅動程式和記錄框架。
要使用的 JVM 是使用 JAVA_HOME(完整 JDK)或 JRE_HOME(僅 JRE)環境變數設定的。設定這個變數的正確位置將取決於您的環境,特別是如果 Tomcat 設定為在系統啟動時自動啟動。如果您可以自由選擇設定位置,那麼請根據您的作業系統使用 setenv.bat 或 setenv.sh。
不,我們沒有。您選擇的 JVM 供應商取決於您的作業系統。
我們推薦 mod_proxy_http,其次是 mod_jk。一般來說,mod_proxy_ajp 的穩定性不如 mod_proxy_http 或 mod_jk。請注意,mod_jk2 已被棄用,不應再使用。
當使用 SSL 時,應啟用 HTTP keep alive,因為 SSL 握手對於每個請求來說都是相對昂貴的操作。
是的,我們建議不要使用。我們從客戶收到的回饋是 APR 連接器在 Solaris 上不穩定。
在不了解確切的錯誤或您使用的版本的情況下,很難評論。所有已知的 Apache httpd 問題和目前狀態都可以在 ASF Bugzilla 資料庫中找到。Tomcat 問題也可以在 Bugzilla 中找到。
對於高並發環境,將其設定為 1。否則,將其設定為您在頁面上擁有的物件的平均數量,介於 10 到 100 之間。
JkOptions +DisableReuse 應該放在您的 httpd.conf 檔案中,與您的其他 mod_jk 設定一起。
當您需要支援具有 keep alive 的高並發,並且 APR 不是一個選項時,例如因為它在您的平台上不穩定。
這取決於情況。如果您將所有請求代理到 Tomcat,那麼效能會稍微下降。如果 httpd 處理一些請求(例如所有靜態內容),那麼您可能會看到一些好處。有許多基準測試試圖證明一個連接器比另一個更好。然而,這些基準測試中的任何一個都不太可能代表您的應用程式。唯一確定方法是在您的環境中使用實際的負載和使用模式進行測試。
可以。這是否為您的環境提供最佳效能將取決於該環境和您的應用程式。與前一個問題一樣,唯一確定方法是在您的環境中使用實際的負載和使用模式進行測試。
您的安裝的安全性將取決於許多因素。是否使用 Apache httpd 不太可能顯著改變您的安裝的安全性。其他因素,例如保持更新修補程式和使用防火牆,通常對您的整體安全性水平有更大的影響。
如同往常,這將取決於您的環境,但 httpd 效能調校文件提供了一些有用的通用指南。
SpringSource ERS 不僅僅是 Apache Tomcat。從純粹的 Tomcat 角度來看,效能不是區分因素。ERS 的優點是簡單的安裝、易於管理的升級和修補程式、對多個實例的支援以及所有組件的整合。
會有許多差異,而重要的差異會因組織而異。首先要弄清楚您想要從應用程式伺服器獲得什麼,然後將該列表與市場進行比較。整合是有好處的。更高的統一性意味著更簡單的維護、更少的培訓等等。然而,也有成本。您需要查看您的組織以及它計劃如何整合(僅限新專案、下一個主要版本的所有專案、現在的所有專案等),以將成本與相關的好處進行比較。
這個領域已經發佈了各種報告。結果的實用性取決於測試與您的負載的匹配程度。如同往常,唯一確定方法是在您的環境中使用實際的負載和使用模式進行測試。
Tomcat 不提供此作為配置選項。您當然可以建立多個 Tomcat 實例,在每個實例上安裝您的應用程式,然後跨實例進行負載平衡。
管理員狀態頁面可能是一個好的起點。您可以將該 Servlet 的程式碼用作您自己的更具體/更廣泛的檢查的基礎(如果需要)。如果您確實增強了它,請考慮將您的增強功能貢獻回 Apache Tomcat 社群。
預設位置在 $CATALINA_BASE/conf。