1. 基準測試
1.1 應用
驗證系統的一些假設
重現系統異常
測試系統當前的運行狀況
模擬更高的負載
規劃業務增加
測試應用適應可變環境的能力
測試不一樣硬件,軟件和操做系統的配置mysql
1.2 策略
針對整個系統的總體測試, 集成式
單獨測試MySQL, 單組件式web
1.3 測試指標
- 吞吐量: 在線事務處理(OLTP),單位爲每秒事務數TPS
- 響應時間或延遲: 百分比響應時間較爲表明性
- 併發性: 任意時間有多少同時發生的併發請求. 關注的是正在工做中的併發操做; 一般是爲了測試應用在不一樣併發下的性能(吞吐量和響應時間)
- 可擴展性
1.4 方法
避免常見錯誤
設計和規劃基準測試
基準測試的運行時間設置
獲取系統的性能和狀態
收集分析繪圖sql
1.5 工具
集成式測試工具數據庫
- ab: Apache http服務器基準測試工具,測試服務器qps, 針對單個url進行儘量快的壓力測試
- http_load: 對Web服務器,能夠經過輸入文件對多個url進行隨機測試
- JMeter: 測試Web應用和其餘入FTP服務器或經過JDBC進行數據庫查詢測試
單組件式測試工具服務器
- mysqlslap: 模擬服務器負載並輸出計時信息
- sqlbench: 測試服務器執行查詢的速度
- super smack: mysql 和postgresql的基準測試工具
- database test suite
- sysbench: 多線程系統壓測工具, 支持mysql,操做系統,和硬件測試
2. 服務器性能剖析
2.1 原則
- 性能即響應時間沒法;
- 沒法測量就沒法有效優化
2.2 書中推薦工具
- New Relic: 收集分析數據,提供web界面
- xhprof: Facebook開源的輕量級PHP性能分析工具
- Percona Toolkit: pt-query-digest 生成慢查詢日誌分析報告
2.3 剖析查詢
- SHOW PROFILE: 將profiling開啓後,執行的sql的剖析信息會被記錄到臨時表, 經過 show profile from query (index)命令便可以獲取到執行的過程信息
- SHOW STATUS: 非剖析工具,主要用在對於執行完後觀察某些計數器的值
- 使用慢查詢日誌
2.4 診斷間歇性問題
- show global status: 經過某些計數器的"尖刺"或"凹陷"分析問題
- show processlist: 觀察是否有大量線程處於不正常的狀態或其餘不正常特徵
- 使用innotop: 實時地展現服務器正在發生的事情,監控innodb,監控多個MySQL實例
- 使用慢查詢日誌
2.5 其餘剖析工具
- 自帶的一些INFORMATION_SCHEMA統計表
- 使用strace工具,pt-iopfofile工具生成I/O活動報告