性能優化的三大核心指標
- 並發用戶數: 在 SLA 規定響應時間內,系統支撐的最大並發用戶量。負載測試必須覆蓋典型業務事務。
- 吞吐量: 每秒完成事務數 (TPS),反映系統處理能力上限。
- 可靠性: 請求失敗率極低,核心解決網絡延遲/超時導致的故障。

圖 1-1:性能優化目標與路徑
優化哲學:榨乾現有資源,再談擴容
許多單位遇到性能瓶頸首反應是加硬件。但單純堆硬件只能暫時緩解,問題本質不解決,負載增長後故障必復發。正確路徑:
- 深度分析應用代碼、數據庫 SQL、JVM/GC、應用服務器參數。
- 針對性調優榨取現有硬件最大性能。
- 驗證優化效果無提升空間後,再評估擴容 (Scale Up/Out)。
J2EE 環境可優化性能因子全景
1. 應用代碼層
- 演算法複雜度、集合選型、字符串拼接、循環嵌套。
- 數據庫訪問:N+1 查詢、缺少索引、大事務、連接池洩漏。
- 緩存策略:多級緩存 (本地/分佈式)、緩存穿透/擊穿/雪崩防護、失效策略。
- 併發控制:鎖粒度、無鎖數據結構、線程池配置、異步處理 (MQ/Event Bus)。
2. 中間件/容器層
- Servlet 容器 (Tomcat/Jetty/Undertow): 連接器 (NIO/APR)、線程池、Accept Queue、壓縮、靜態資源緩存、Session 複製/持久化策略。
- EJB 容器: 實例池大小、事務超時、二級緩存、調用優化 (Local/Remote 接口選擇)。
- JMS/MQ: 持久化模式、預取數、批量消費、集群負載均衡。
3. JVM/GC 層
- 堆內存分代大小 (Eden/Survivor/Old)、元空間/永久代。
- GC 算法選擇 (CMS/G1/ZGC/Shenandoah) 與業務延遲敏感度匹配。
- GC 日誌分析:Full GC 頻率、STW 時間、內存洩漏排查 (MAT/JProfiler)。
- JIT 編譯優化、逃逸分析、標量替換。
4. 數據庫/存儲層
- SQL 執行計劃分析、索引覆蓋、分區表、讀寫分離、分庫分表。
- 連接池 (HikariCP/Druid) 核心參數:最大連接、獲取超時、空閒驗證、洩漏檢測。
- 事務隔離級別權衡 (RC/RR)、鎖優化、長事務拆解。
5. 架構/網絡層
- CDN/反向代理 (Nginx) 靜態資源卸載、Gzip/Brotli、HTTP/2、TLS 1.3。
- 微服務拆分粒度、API 閘道限流熔斷、服務發現註冊開銷。
- 分布式追蹤 (SkyWalking/Zipkin) 定位跨服務延遲熱點。
結語
性能優化是系統工程,無銀彈。建立基準測試 → 瓶頸定位 → 針對優化 → 回歸驗證的閉環流程,養成「數據驅動優化」習慣,方能在 J2EE 複雜生態中構建高性能、高可靠、可擴展的企業級系統。