正規壓力測試需模擬生產環境、投入大量硬體與專家,成本高昂。但 80% 以上上線效能問題源於低級程式錯誤(N+1 查詢、連線洩漏、無索引 SQL、過度同步等)。本文推薦「最小化資源壓力測試法」:在 PC 級環境、最小 JVM 堆、最小資料庫連線池下,以 1-10 併發用戶逐步施壓,配合輕量級分析工具,低成本暴露淺層缺陷,為正式測試鋪路。
核心優勢
- 環境輕鬆搭建,無需大型硬體、網路、Unix/專用應用伺服器專長。
- 開發人員獨立完成,無需 DBA、OS、中介軟體專家配合。
- 工具選擇自由,用最熟悉的即可。
- 練就診斷直覺,轉入正式環境更得心應手。
工具箱(皆可免費取得)
| 層面 | 推薦工具 | 觀察重點 |
| JVM | jvisualvm、JRockit Mission Control、HP jmeter profile | 堆變化、執行緒、GC |
| 資料庫 | Quest Central (DB2)、OEM/資料字典 (Oracle)、自帶監控 | 鎖、連線數、慢 SQL |
| 應用伺服器 | JProfiler、JProbe | 熱點方法、耗時方法 |
| SQL 追蹤 | P6Spy | 慢 SQL、執行計畫 |
| 壓力產生 | JMeter + Badboy、LoadRunner、Selenium、VS Load Test | 併發模擬 |
| 記錄對比 | Excel/表格 | 配置變更與指標對比 |
關鍵配置原則
- 資料庫連線:無連線池設最小 1;有連線池設 1。隨併發微調,但永遠低於壓力工具併發數。測試資料量貼近生產。
- JVM 堆:啟動堆設略高於應用伺服器最低需求,保證啟動即可。逐步微增,拒絕大記憶體掩蓋洩漏。
- 併發用戶:從 1 開始,每次 +1 或 +2,上限 5-10 即可。
五階段測試流程
- 1 用戶 1 連接基線檢測:暴露明顯資源洩漏(DB 連線不釋放)、慢方法/慢 SQL、過度調用(如間接觸發 200 次 DB 操作)。切忌從 5+ 併發起測,會掩蓋基線問題。
- 微增併發長時間穩定性測試(2-4 小時):鎖定 JVM 堆、執行緒、GC 曲線,排除緩存/佇列類記憶體洩漏。關注 JVM 錯誤日誌與 dump。
- 逐步增併發檢測鎖競爭:SQL 鎖、執行緒鎖、檔案讀寫衝突。用 Mission Control 或 jstack/jmap 分析執行緒狀態。
- 極限併發長測(半天-1 天):驗證記憶體洩漏是否惡化、執行緒資源是否耗盡、DB 連線數是否持續增長(連線池配置/實作/驅動問題)。
- 跨 JVM 驗證:Sun HotSpot vs JRockit 結果常大不同(JRockit 併發強)。若條件允許雙跑,避免上線 JVM 切換驚喜。
完成上述最小化測試,正式壓測將輕鬆許多;若客戶預算充足,硬體升級亦可直接解決殘留瓶頸。核心心法:用最小成本,在最早階段,抓住最低級的錯誤。