基準測試 針對系統設計的壓力測試,目標是掌握給定負載下的系統行為、評估容量、驗證變更影響、重現問題場景。
局限性:非真實流量測試,只能大致估算系統餘量。真實壓力測試構造數據極其謹慎,且不再屬於基準測試範疇。
| 策略 | 別名 | 範圍 |
|---|---|---|
| 集成式 | Full-stack | 整個應用棧(Web + DB + 快取 + 網路) |
| 單組件式 | Single-component | 僅 MySQL 伺服器 |
| 指標 | 單位 | 適用場景 | 關鍵統計 |
|---|---|---|---|
| 吞吐量 | TPS / TPM | OLTP 交易系統 | 每秒事務數 |
| 響應時間/延遲 | ms / s | 用戶體驗敏感型 | 平均、最小、最大、百分位 (p95/p99) |
| 並發性 | 活躍線程/連接數 | 容量規劃 | Threads_running、併發請求數 |
| 可擴展性 | 倍數關係 | 容量預測 | 資源翻倍 → 吞吐翻倍? |
關鍵澄清:Web 「5 萬用戶在線」≠ DB 並發。HTTP 無狀態,實際 DB 併發可能僅 10~15。測試關注 正在工作的併發線程/連接,記錄 Threads_running。
測試運行至系統穩定,穩定時長 ≥ 預熱時長。短期測試(如 60 秒)不可作性能結論,寧可參考他人長期測試結果。

Shell 腳本全量收集原始數據(系統狀態、性能計數器、MySQL 狀態變量),事後分析過濾,避免遺漏關鍵異常點。
全流程自動化:裝載數據 → 預熱 → 執行 → 記錄 → 分析。多輪運行取中位數。腳本化分析輸出圖表。
細節數據視覺化能快速發現性能拐點、抖動、瓶頸轉移等文字難以察覺的模式。
| 類別 | 工具 | 特點 |
|---|---|---|
| 集成式 | ab | Apache HTTP 壓測,簡單易用 |
| http_load | 支援 URL 列表隨機測試,較 ab 靈活 | |
| JMeter | Java 圖形化,功能豐富,支援分布式壓測 | |
| 單組件式 | mysqlslap | MySQL 官方,模擬併發、自動生成 SQL |
| MySQL Benchmark Suite (sql-bench) | 單線程,跨 DB 比較查詢速度 | |
| Super Smack | MySQL/PostgreSQL 壓測,支援隨機數據填充 | |
| Database Test Suite (dbt2) | 免費 TPC-C 類 OLTP 測試(未認證) | |
| Percona TPCC-MySQL | 專為 MySQL 優化的 TPC-C 實現 | |
| sysbench | 全能:OLTP、檔案 I/O、CPU、記憶體、線程調度,多線程,首選工具 |

名言:「不做基準測試的優化都是耍流氓。」—— 建立度量體系,用數據說話。