領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多幾周前,Filip Hanik 和我舉辦了“最佳化和調整 Apache Tomcat”系列網路研討會的第二部分。您可以透過 SpringSource 網站的網路研討會部分獲取網路研討會的錄音和幻燈片副本。同一頁面上還有所有以前的 SpringSource 網路研討會的連結,以及 Covalent 網路研討會存檔。
我們無法在問答環節中回答所有問題,所以,正如承諾的那樣,以下是剩餘問題和我們的答案。
您幾乎肯定需要使用分析器來識別記憶體洩漏的根本原因。最新的 Sun JDK 包含 jhat 和 jmap 等工具。還有許多其他分析器可用,包括免費和商業的。Filip 和我在調查 Tomcat 記憶體洩漏時使用 YourKit,因為 YourKit 為開源開發者提供免費許可證。
這通常發生在 Tomcat 載入的類保留對 Web 應用程式載入的類的引用時。當 Web 應用程式停止時,Tomcat 類載入器繼續保留對 Web 應用程式載入的類的引用。這個類保留對 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 設定一起。
當您需要支援高併發且保持活動狀態,並且 APR 不可用時,例如,因為它在您的平臺上不穩定。
這取決於。如果您將所有請求代理到 Tomcat,那麼效能會略有下降。如果 httpd 處理一些請求(例如所有靜態內容),那麼您可能會看到一些好處。有許多基準測試試圖證明一個聯結器比另一個聯結器更好。但是,這些基準測試都不太可能代表您的應用程式。唯一確定的方法是在您的環境中,使用真實的負載和使用模式進行測試。
是的。這是否能為您的環境提供最佳效能將取決於該環境和您的應用程式。與上一個問題一樣,唯一確定的方法是在您的環境中,使用真實的負載和使用模式進行測試。
您的安裝安全性將取決於許多因素。使用或不使用 Apache httpd 不太可能顯著改變您的安裝安全性。其他因素,例如及時更新補丁和使用防火牆,通常對您的整體安全性水平影響更大。
一如既往,這將取決於您的環境,但 httpd 效能調優文件提供了一些有用的通用指南。
SpringSource ERS 不僅僅是 Apache Tomcat。從純粹的 Tomcat 角度來看,效能不是差異化因素。ERS 的優勢在於簡單的安裝、易於管理的升級和修補、對多個例項的支援以及所有元件的整合。
會有很多差異,而且重要的差異會因組織而異。首先確定您希望從應用程式伺服器中獲得什麼,然後將該列表與市場進行比較。合併是有好處的。更大的一致性意味著更簡單的維護、更少的培訓等等。但是,也有成本。您需要檢視您的組織及其計劃如何合併(僅新專案、下一次主要釋出的所有專案、現在所有專案等)以比較成本與相關收益。
該領域已釋出各種報告。結果的有用性取決於測試與您的負載匹配的程度。一如既往,唯一確定的方法是在您的環境中,使用真實的負載和使用模式進行測試。
Tomcat 不提供此配置選項。當然,您可以建立多個 Tomcat 例項,在每個例項上安裝您的應用程式,然後跨例項進行負載均衡。
管理器狀態頁面可能是一個很好的起點。如果需要,您可以使用該 Servlet 的程式碼作為您自己更具體/更廣泛檢查的基礎。如果您確實進行了增強,請考慮將您的增強貢獻回 Apache Tomcat 社群。
預設位置是 $CATALINA_BASE/conf。