前言:
? ? ? ?基準測試benchmark:基本技能,是針對系統(tǒng)設(shè)計的一種壓力測試,是唯一方便有效、可學習系統(tǒng)在給定的工作負載下回發(fā)生什么 的方法,他可以觀察系統(tǒng)在不同壓力下的行為,評估系統(tǒng)的容量,掌握哪些是重要的變化,或觀察系統(tǒng)如何處理不同的數(shù)據(jù),可在系統(tǒng)實際負載外創(chuàng)建虛擬場景進行測試(掌握系統(tǒng)行為)
正文:
如前言,基準測試很、重、要!可以完成的工作: 總的來說:測試硬件、預估硬件、驗證系統(tǒng)、測壓力、調(diào)配置
? ? ? ? 1、驗證基于系統(tǒng)的假設(shè),確認假設(shè)是否符合實際情況;2、重現(xiàn)系統(tǒng)中某些異常行為,以解決;3、測試系統(tǒng)當前的運行情況,利用歷史結(jié)果分析診斷無法預測的問題;?4、模擬更高的負載找出系統(tǒng)隨壓力增加而可能遇到的擴展性瓶頸;5、規(guī)劃未來的業(yè)務增長,硬件、網(wǎng)絡容量、相關(guān)資源;6、測試應用適應可變環(huán)境的能力;7、測試不同的硬件、軟件和操作系統(tǒng)配置,證明設(shè)備是否配置正確;
? ?對數(shù)據(jù)庫的基準測試的作用,就是分析在當前的配置下(包括硬件配置、OS、數(shù)據(jù)庫設(shè)置等),數(shù)據(jù)庫的性能表現(xiàn),從而找出mysql的性能閾值,并根據(jù)實際系統(tǒng)的要求調(diào)整配置。【源】
與真實壓力不同:真實的復雜多變;基準測試要求盡可能快執(zhí)行完成,簡單直接、結(jié)果易比較、成本低易行
2.2策略
針對系統(tǒng)整體:集成式full-stack
單獨測試MySQL:單組件式single-component
推薦整體測試:要正確設(shè)置
? ? ? ?1、用戶關(guān)注的是整體的性能;2、MySQL并非總是瓶頸;3、更能揭示應用的真實表現(xiàn)
推薦單獨測試:需要數(shù)據(jù)
? ? ? ?1、需比較不同schema或查詢的性能;2、針對某個具體問題的測試;3、避免漫長,做短期、快速周期循環(huán)
2.2.1指標
目標:細化為一系列問題,具體問題具體分析
吞吐量:
? ? ? 單位時間內(nèi)事務處理數(shù),TPC-C、多用戶交互式應用,每秒事務數(shù),每分鐘事務數(shù)
響應時間或延遲
? ? ? 測試任務所需的整體時間,平均響時、最小響時、最大和所占百分比;借助圖表
并發(fā)性:
? ? ?測試應用在不同并發(fā)下的性能,關(guān)注正在工作中的并發(fā)操作、同時工作中的線程數(shù) 連接數(shù);
? ? ?web服務器并發(fā)性!=數(shù)據(jù)庫的,僅表會話存儲機制數(shù)據(jù)處理能力;測web并發(fā) 任意時間有多少并發(fā);
可擴展性
? ? ? ?可擴展性:給系統(tǒng)增加一倍工作,理性情況下能獲得兩部的結(jié)果;給系統(tǒng)增一倍資源可或2倍吞吐量
? ? ? 系統(tǒng)業(yè)務壓力可能發(fā)生變化:測可擴展性非常必要;該指標對容量規(guī)范有用:提供信息來發(fā)現(xiàn)應用瓶頸
盡可能收集測試需求,基于需求設(shè)計測試,忌只關(guān)注部分指標,而忽略其他指標
2.3方法
要盡可能接近真實應用的情況:
? ? ?使用全集、數(shù)據(jù)分布特點、真實分布參數(shù)、是否多用戶、匹配用戶行為、多類型、檢查錯誤日志、系統(tǒng)預熱:重啟后多長時間才達到正常性能容量、持續(xù)一定時間;
2.3.1設(shè)計、規(guī)范
提出問題、目標明確
? ? ?標準的基準測試:合適的方案 TPC-H OLTP
? ? ?專用的測試:復雜、迭代,獲易還原的生產(chǎn)數(shù)據(jù)集快照
計劃:?參數(shù)、結(jié)果文檔化、測試詳細記錄
2.3.2時間
基準測試應運行足夠長的時間,無法確認時間可一直運行,持續(xù)觀察知道確認系統(tǒng)已穩(wěn)定
一個簡單的測試規(guī)則:等系統(tǒng)看起來穩(wěn)定的時間至少=系統(tǒng)預熱的時間
2.3.3獲取系統(tǒng)性能和狀態(tài)
盡量多地收集被測系統(tǒng)的信息
? ? ?best建目錄、每執(zhí)行一輪測試創(chuàng)建單獨子目錄,將結(jié)果、配置文件、測試指標、腳本和其他相關(guān)說明保存其中
需要記錄是數(shù)據(jù):
? ? ?系統(tǒng)狀態(tài)、性能指標:CPU使用率 ?、磁盤I/O、網(wǎng)絡流量統(tǒng)計、SHOWGLOBAL STATUS計數(shù)器
合理的間隔,記錄開始時間、利用時間戳、只是收集就好
2.3.4獲取準確的結(jié)果
回答些問題:
? ? ?是否選擇了正確的基準測試?是否為問題收集了數(shù)據(jù)?預熱時間是否足夠長?
? ? ?是否采用了錯誤的測試標準:IO密集型引用采用CPU密集型測試標準來評估性能?
? ? ?測試結(jié)果是否可重復?重測前確保系統(tǒng)狀態(tài)一致;對癥測
影響因素:
? ? ? 外部壓力、性能分析、監(jiān)控系統(tǒng)、詳細日志、周期性作業(yè)
注意:
? ? 過程中所需資源是專來測試的;測試中盡量少修改參數(shù)、通過迭代逐步修改基準測試的參數(shù);認真研究過程中的異常情況并找到原因
2.3.5運行測試分析結(jié)果
自動化:減少人為失誤,Makefile文件、腳本
測試結(jié)果滿足目前需求,簡單運行幾輪測試,看看結(jié)果就OK了,如結(jié)果變化很大,可多運行幾次、或更長時間
結(jié)果:
?? ? ?分析,將數(shù)字變成知識,最終的目的是回答在設(shè)計時的問題
? ? ? 如何抽象有意義的結(jié)果,依賴于如何收集數(shù)據(jù),寫腳本分析數(shù)據(jù)、減少人為失誤、工作量、可重復、文檔化
2.3.6繪圖重要性
? ? ? 一張圖勝過千言萬語嘛,本來有些知識點寶寶是想畫導圖的,但是么有畫
? ? ?書中有這么一個語句,分享一下:SHOW FULL?PROCESSLIST ? ?SHOW PROCESSLIST顯示哪些線程正在運行,您也可以使用mysqladmin processlist語句得到此信息,如果您有SUPER權(quán)限,您可以看到所有線程,否則,您只能看到您自己的線程,不使用FULL關(guān)鍵詞,則只顯示每個查詢的前100個字符【源】
2.4基準測試工具
集成測試工具:整個應用
? ? ?1、ab是apache http,每秒最多可處理多少請求【參考】【2】
? ? ?2、http_load:ab類似更靈活,被設(shè)計為對web服務器測試,通過一個輸入文件提供多個URL,隨機選擇進行測試,也可定制,使其按照時間比率進行測試【參考】
? ? ?3、JMeter,Java程序,可加載其他應用并測試其性能,這個聽不錯的,上面兩個沒有接觸過,不評論
單組件式:測MySQL,基于MySQL的系統(tǒng)性能
? ? ? 1、mysqlslap:mysql5.1后自帶,模擬服務器的負載,輸出計時信息,可執(zhí)行并發(fā)連接數(shù)、指定sql語句,否則自動生成select語句【參考】
? ? ?2、MySQL Benchmark Suite(sql-bench):自帶、5.7拿掉,基準測試套件,用于不同數(shù)據(jù)庫服務器上進行比較測試,單線程串行執(zhí)行,測執(zhí)行查詢的速度;包含了大量預定義測試,易使用,輕松比較不同引擎或配置的性能測試,CPU密集型的,結(jié)果會顯示哪些類型的操作在服務器上執(zhí)行更快,缺點:測試數(shù)據(jù)集小且無法用指定的數(shù)據(jù),需要perl BDB支持;【參考】
? ? 3、Super Smack:MySQL、postgresql,提供壓力測試和負載均衡,復雜而強大的工具,可模擬多用戶訪問,加載測試數(shù)據(jù)到庫、隨機數(shù)據(jù)填充測試表【參考】
? ? 4、database Test Suite:類似某些工業(yè)標準測試的工具集,免費TPC-C OLTP測試工具
? ? 5、sysbench:多線程系統(tǒng)壓測,據(jù)影響數(shù)據(jù)庫服務器性能的因素評估系統(tǒng)的性能,全能測試工具,支持MySQL、操作系統(tǒng)、硬件的硬件測試【參考】【2】
? ? MySQL的BENCHMARK()函數(shù):測試特定操作的執(zhí)行速度,參數(shù)可以是需要執(zhí)行的次數(shù)或表達式(任何標量表達式)
2.5案例
此處省略n字?
2.6總結(jié)
? ?終于等到你~音樂起;建議至少要熟悉sysbench,如何使用oltp(比較不同系統(tǒng)性能) 和fileio 測試;經(jīng)常執(zhí)行基準測試,制定一些原則很必要,選擇合適的測試工具、建立腳本庫,收集信息分析結(jié)果,熟練一種繪圖工具;
? 大佬都這么說了,所以你知道我的下一篇是什么了嗎?
相關(guān)文章: