領先一步
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 上不穩定。
在不知道您使用的具體 bug 或版本的情況下,很難評論。所有已知的 Apache httpd 問題及其當前狀態都可以在 ASF Bugzilla 資料庫 中找到。Tomcat 問題也可以在 Bugzilla 中找到。
對於高併發環境,將其設定為 1。否則,將其設定為頁面上的平均物件數,介於 10 到 100 之間。
JkOptions +DisableReuse 應與您的其他 mod_jk 設定一起放在 httpd.conf 檔案中。
當您需要支援高併發且開啟 keep alive,並且 APR 不是一個選項時,例如因為它在您的平臺上不穩定。
這取決於情況。如果您將所有請求都代理到 Tomcat,效能會略有下降。如果 httpd 處理部分請求(例如所有靜態內容),那麼您可能會看到一些好處。有一些基準測試試圖證明某個聯結器比另一個更好。然而,這些基準測試很可能無法代表您的應用程式。唯一確定的方法是在您的環境中,使用真實的負載和使用模式進行測試。
是的。這是否為您的環境提供最佳效能取決於您的環境和應用程式。與上一個問題一樣,唯一確定方法是在您的環境中,使用真實的負載和使用模式進行測試。
您的安裝的安全性取決於許多因素。使用或不使用 Apache httpd 不太可能顯著改變您的安裝安全性。其他因素,例如及時更新補丁和使用防火牆,通常對您的整體安全級別產生更大的影響。
和往常一樣,這取決於您的環境,但 httpd 效能調優文件 提供了一些有用的通用指導。
SpringSource ERS 不僅僅是 Apache Tomcat。從純 Tomcat 的角度來看,效能不是決定性因素。ERS 的優勢在於安裝簡單、易於管理的升級和補丁、對多個例項的支援以及所有元件的整合。
會有很多差異,而重要的差異會因組織而異。首先弄清楚您期望從應用伺服器獲得什麼,然後將該列表與市場上的產品進行比較。合併有很多好處。更高的一致性意味著更簡單的維護、更少的培訓等等。但是,也有成本。您需要審視您的組織以及它計劃如何進行合併(僅新專案、下一主要版本的所有專案、立即合併所有專案等),以便比較成本與相關的益處。
在這方面已經發布了各種報告。結果的有用性取決於測試與您的負載匹配程度。和往常一樣,唯一確定的方法是在您的環境中,使用真實的負載和使用模式進行測試。
Tomcat 沒有提供此配置選項。當然,您可以建立多個 Tomcat 例項,在每個例項上安裝您的應用程式,然後在例項之間進行負載均衡。
的 管理器狀態頁面 可能是一個很好的起點。如果需要,您可以使用該 Servlet 的程式碼作為自己更具體/更廣泛檢查的基礎。如果您對其進行了增強,請考慮將您的增強貢獻回 Apache Tomcat 社群。
預設位置是 $CATALINA_BASE/conf。