性能問題表現為網頁響應變慢,J2EE 系統基本症狀:應用服務器資源、JVM 堆、系統資源、數據庫資源、網絡活動。架構師應優先考慮性能與可擴展性,先解決易見問題(數據庫訪問效率低、遠程調用過多),再挖掘隱性問題(算法累積影響、不必要開銷)。
核心優化配置項
JVM 堆與垃圾回收
- 最大堆 < 物理內存,減去其他進程,負載測試中優化,避免過大導致 GC 停頓長
- 初始堆:設為最大值,或最大值 1/4~1/2
- 年輕代:Sun 建議最大堆 1/3
- GC 算法:增量(減停頓但降吞吐)、並行(年輕代,多 CPU 加速)、並發(年老代,最大限度並發執行,適合大堆多 CPU)
處理線程
- 線程池大小滿足負載需求,避免過大增加上下文切換
- 通常設為最大利用 CPU 但不使其過載
EJB 配置
- 實例池大小與初始 Bean 數:避免過大消耗內存,初始數過高延長啟動時間
- 緩存大小與超時:避免過大或超時過長導致閒置 Bean 佔用內存
數據庫連接池
- 增大連接池提高性能,事務型與批處理型 SQL 應用分離連接池
- 啟用
PreparedStatement 緩存:減少重複 SQL 解析開銷,事務型應用效果顯著