基準測驗是什么?
簡單來說,基準測驗是則很難對系統設計的一種壓力測驗,通常的目標是為了掌握系統的行為,但也有其他原因,比如重現某個系統狀態,或者是做新硬體的可靠性測驗,
為什么需要基準測驗
因為基準測驗是唯一有效方便的,可以學習系統在給定的作業負載下會發生什么的方法,系統測驗可以觀察在不同壓力下的行為,評估系統的容量,掌握哪些是重要的變化,或者觀察系統如何處理不同的資料,
基準測驗可以完成的作業:
- 驗證系統的假設以及這些假設是否符合實際情況
- 重現并解決系統中的例外行為
- 測驗系統當前的運行情況和利用歷史的基準測驗結果分析一些無法預測的問題
- 模擬比當前系統更高的負載從而找出系統隨壓力增加而遇到的瓶頸
- 規劃未來的業務增長
- 測驗應用適應可變環境的能力
- 測驗不同的硬體,軟體和作業系統配置
- 證明新采購的設備是否配置正確
基準測驗的一個主要問題在于其不是真實壓力的測驗,基準測驗施加給系統的壓力相對真實壓力來說,通常會比較簡單,因為真實壓力是不可預期而且變化多端的,有時候情況會過于復雜而難以解釋,
那么基準測驗和真實壓力不同在什么地方?
- 資料量,資料和查詢的分布
- 但最重要的一點是基準測驗通常要求盡可能快完成,所以會給系統造成過大的壓力,所以一般都會調整給測驗工具的最大壓力,一遍系統可以在閾值內完成測驗
結論就是,我們只能進行大概的測驗,來確定系統大致的余量有多少,當然也可以做一些真實的壓力測驗,但在構造資料集和壓力要特別小心,而且這樣就不再是基準測驗了,基準測驗要簡單直接,結果之間相互容易比較
基準測驗的策略
兩種主要策略:
- 集成式:針對整個系統的整體測驗
- 單組件式:單獨測驗MySQL
針對測驗整個系統做集成式測驗而不是單獨測驗的原因有以下幾點:
- 因為用戶關注的不僅僅是MySQL本身的性能,而是應用整體的性能
- MySQL并非總是應用的瓶頸
- 只有對整體應用做測驗,才能發i西安各部分之間的快取帶來的影響
- 集成式測驗更能揭示應用的真實表現,而單獨組件很難做到這一點
但是集成式測驗很難建立,如果基準測驗的設計有問題,那么結果就無法反映真實的情況,決策也可能是錯的,
所以有的時候不需要了解整個應用的情況,而只需要關注MySQL的性能,至少在專案初期可以這樣做,以下情況,可以選擇只測驗MySQL:
- 需要比較不同的schema或查詢的性能
- 針對應用中某個問題的測驗
- 為了避免漫長的基準測驗,可以通過一個短期的基準測驗,做快速的”周期回圈“
另外,如果能夠在真實的資料集上執行重復的查詢,那么也是有用的,如果可能,可以采用生產環境的資料快照,不幸的是,設定一個基于真實資料的基準測驗復雜而且耗時,而且開發一個新應用,只有很少的資料量,如果想要測驗規模擴張后的性能表現,只能通過模擬大量的資料和壓力進行
測驗何種指標
不同的指標需要用不同的方法測驗
以下指標:
- 吞吐量:單位時間內事務處理數,這類基準測驗主要是針對在線事務處理(OLTP)的吞吐量,測驗的常用單位是每秒或每分鐘事務數(TPS/TPM)
- 回應時間或延遲:這個指標用于測驗任務所需的整體時間,一般使用百分比回應時間
- 并發性:非常重要但是經常被誤解的指標,并發性基準測驗需要關注的是正在作業中的并發操作,或者是同時作業的執行緒數或者是連接數,當并發性增加時,需要測量吞吐量是否下降,回應時間是否變長
- 可擴展性:可擴展性不是壓力測驗的指標,可擴展性指標對于容量規范非常有用,它可以提供其他測驗無法提供的資訊,來幫助發現應用的瓶頸
歸根結底,應該測驗那些對用戶來說最重要的指標,因此應該盡可能地去收集一些需求,然后基于這些需求去設計基準測驗
基準測驗的方法
以下是測驗的常見錯誤
- 使用真實資料的子集而不是全集
- 使用錯誤的資料分布
- 使用不真實的分布引數
- 在多用戶場景中,只做單用戶的測驗
- 在單服務器上測驗分布式應用
- 與用戶真實行為不匹配
- 反復的執行同一個查詢
- 沒有檢查錯誤
- 忽略了系統預熱的程序,不同狀態下測驗的結果是不相同的
- 使用默認的服務器配置
- 測驗時間太短了,因為基準測驗需要持續一定的時間
設計和規劃基準測驗
- 提出問題并明確目標
- 決定是采用標準的基準測驗,還是設計專用的測驗
標準的基準測驗,應該確認選擇了合適的測驗方案
設計專用的基準測驗是很復雜的,往往需要一個迭代的程序,首先需要獲得生產資料集的快照(很容易還原),然后,針對資料運行查詢(選擇一個有代表性的時間段,如果時間段選擇比較小,則可以選擇多個時間段,這樣有助于覆寫整個系統的活動狀態)
3.可以在不同級別記錄查詢
4.即使不需要創建專用的基準測驗,也要寫下測驗規劃(測驗資料,系統配置步驟,如何測量和分析結果,以及預熱的方案)
5.寫一些腳本分析測驗結果
基準測驗應該運行多長時間
基準測驗應該運行足夠長的時間,這一點非常重要,應當在穩定狀態下測驗并觀察
一個常見的錯誤測驗方式是,只執行一系列短期的測驗,這種不花費足夠時間去完成準確完成的基準測驗,那么已經花費的所有時間都是一種浪費,所以有時候要相信別人的測驗結果,并使用
獲取系統性能和狀態
可以撰寫一個shell腳本來記錄測驗結果,組態檔,測驗指標,腳本和其他相關說明都保存在其中
獲得準確的測驗結果
首先,獲得準確測驗結果的最好辦法,是回答一些關于基準測驗的基本問題:
- 是否選擇了正確的基準測驗
- 是否為問題收集了相關的資料
- 是否采用了錯誤的測驗標準
然后,確認測驗結果是否可重復,每次測驗之前都要確保系統的狀態一致
如果測驗程序會修改資料或者schema,那么每次測驗前,需要利用快斬訓原資料
每次測驗時修改的資料應該盡可能地小,一般情況下都是通過迭代的方式
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298642.html
標籤:其他
