MySql-性能壓力測試-概論篇

性能測試前先要清楚目的是什麼

  • 測試數據庫新版本的性能
  • 測試新機型的性能
  • 驗證某些DB/OS層面的參數
  • 壓測存儲的性能
  • 壓測某些場景

確定目標之後我們要選擇何種壓測場景進行壓測,只讀,只寫,讀寫混合? 觀察壓測過程中的性能曲線是否滿足我們的期望,並且真對性能出現可重複性抖動的問題進行分析原因並改進。

影響性能的因素
大致分爲:DB 層面、OS 層面 、存儲層面。

  • DB層面
    這裏寫圖片描述
    對於MySQL層面,Buffer pool大小事務寫磁盤,binlog的策略,innodb 層的併發讀設置,事務隔離級別,都是會影響到最終的壓測寫入性能表現。

  • OS層面
    這裏寫圖片描述

  • 存儲層面
    這裏寫圖片描述

需要關注的重要指標

  • DB層
    QPS(Queries per second)、TPS(Throughput)、RT(響應時間)

對於db層,我想特別強調對rt的監控,脫離業務場景的壓測都是耍流氓,很多壓測報告都說qps,tps 極高,但是沒有公佈對應的rt。大於生產需求的rt 閥值的壓測結果都是沒有用的。

比如說用戶發起的一個業務請求,包含20次select,10次dml操作,單條sql,rt 爲10ms,應用服務器 和db服務器網絡交互 一次同城1ms -2ms,跨城5-15ms,單獨db的響應時間就30*10=300ms 了,加上app與db的交互和業務處理,前端的處理時間,對於高併發的系統,吞度量不能接受。

  • 系統
    CPU: load,usr cpu,
    IO : await, svctm, %util
    網絡: recv , send

await:從請求磁盤操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒=1000毫秒)

%iowait:顯示用於等待I/O操作佔用 CPU 總時間的百分比

svctm:平均每次設備I/O操作的服務時間 (毫秒)%util: 一秒中有百分之多少的時間用於 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的

  • 工具
    orzdba vmstat iostat dstat

注意事項
- 每輪壓測彼此避免相互干擾
- 使用orzdba 觀察 uckpt% 等待日誌刷新完畢之後再開始測試新一輪。
- 注意壓測系統的瓶頸

某些壓測場景沒有做每次壓測的隔離,導致上次的壓測結果影響了下一次的壓測性能,致使系統rt不穩定。可以通過orzdba –innodbs 命令查看uckpt% 該參數表明還有多少日誌沒有被刷新到磁盤。

常用工具

  • Sysbench
    cpu,threads,mutex,memory,fileio,oltp

sysbench是一款開源的多線程性能測試工具,可以執行CPU/內存/線程/IO/數據庫等方面的性能測試。數據庫目前支持MySQL/Oracle/PostgreSQL。是一款非常受dba 歡迎的壓測工具。

  • Tpcc-mysql
    MySQL OLTP benchmarking

TPC(Tracsaction Processing Performance Council) 事務處理性能協會是一個評價大型數據庫系統軟硬件性能的非盈利的組織,TPC-C是TPC協會制定的,用來測試典型的複雜OLTP系統的性能;Tpcc-mysql是percona基於tpcc衍生出來的產品,專用於mysql基準測試,其源碼放在bazaar上,因此需要先安裝bazaar客戶端。值得說明的是 Tpcc-mysql 包括五個處理邏輯,是比較貼近電商平臺業務的一個壓測工具New-Order :新訂單 Payment :支付 Order-Status :訂單查詢 Delivery:發貨 Stock-Level :庫存。

  • mysqlslap
    MySQL 自帶的壓測工具 單條SQL

mysqlslap是從5.1.4版開始的一個MySQL官方提供的壓力測試工具。通過模擬多個併發客戶端訪問MySQL來執行壓力測試,同時提供了比較詳細的數據性能報告。並且能很好的對比多個存儲引擎在相同環境下的併發壓力性能差別。通過mysqlslap –help可以獲得可用的選項,個人覺得 mysqlslap是所有壓測軟件中最簡單的。

  • tcpcopy
    引用線上流量到測試環境,模擬真實壓力

TCPCOPY 是一個 tcp 流量的實時複製工具,其1.0版本由網易工程師 @tcpcopy 開發和維護。一般用來將生產環境的線上流量實時複製到測試環境進行測試。例如新系統上線前,如果我們希望進行一些基本的壓力測試,那麼我們可以直接利用 tcpcopy 來複制線上的流量過來對系統進行測試,這樣的好處是測試數據接近真實水平,且實施起來相對簡單。下面我們將通過一個真實的使用案例,來簡單介紹 tcpcopy 的基本使用方法。我們假定讀者對 tcp 以及路由相關基本知識有一定了解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章