本文將以sysbench壓力測試程式來測試CPU、記憶體、主機檔案系統的效能,然後透過gnuplot數學繪圖自由軟體,將結果繪製成統計圖表以利於解讀,最後則安裝tpcc-mysql,用以評估MySQL資料庫的實際運作效能。
在編譯成功後,將會編譯出如下的兩個主要
程式:
·tpcc_load:用來產生所要測試的資料庫資料。
·tpcc_start:實際執行資料庫效能測試的主程式。
在進行資料庫效能測試之前,必須先產生測試用的資料庫,如下指令就可以產生名稱為「tpcc100」的資料庫:
接著,依據tpcc-mysql原始碼目錄中的「create_table.sql」檔案內容,產生相關的資料庫表格(Table),執行如下指令,隨後會產生如圖9示的表格:
|
▲圖9 產生相關的資料庫表格。 |
由於tpcc-mysql是針對圖9中的資料庫表格進行效能測試,所以效能報告也會分別列出上述個別資料庫表格的效能,但從解讀效能報告角度來說,其實不必區分個別資料庫表格。
在產生資料庫相關的架構後,接著利用tpcc_load程式來產生測試用的測試資料,而tpcc_load的語法如下:
可利用下列指令來產生相關的測試資料(執行完畢後,就會在「tpcc100」資料庫內產生測試所需的資料庫資料):
產生相關的測試資料後,就可以執行tpcc_start程式進行資料庫的效能測試,tpcc_start的語法
如下:
如下指令即表示,利用資料庫名稱為「tpcc100」的資料進行資料庫效能的測試,並持續運行120秒的測試,並將結果導引到檔名為「tpcc-20151005-256.log」的檔案內:
執行完畢,將會產生效能報表,其中的內容如圖10所示,效能報表內容說明如下:
|
▲圖10 產生效能報表。 |
(1)時間間隔的資訊,在此為每10秒產生一次報告。
(2)亦即針對每個資料庫表格(Table)所做的效能報
告,接下來的每列資訊均表示針對個別資料庫表格所做的效能報告,可以看成就是針對資料庫表格的效能測試,不必去管那是那一個的資料庫表格,其格式為:
(3)然後是統計資訊,其中[0],[1]...[4]表示個別資料庫
表格測試的統計資訊,以下說明各參數名稱所代表的意義:
·sc(success):表示成功測試的次數。
·lt(late):表示在測試的時候發生延遲寫入情形的個數。
·rt(retry):表示在測試時發生重試情形的個數。
·fl(failure):表示在測試時發生錯誤情形的個數。
從上述的效能報告內容中,大致可以了解資料庫效能的相關資訊,但千言萬語總不如一張圖來得直覺。所以,接著要將此報表檔案轉換成gnuplot所要求的格式,以便轉換成圖形。
首先連結至網頁「https://github.com/lukemarsden/block-perf-test」,下載tpcc-output-analyze.sh檔案。
完成下載之後,即可以透過以下的指令來轉換
格式:
經筆者測試的結果,利用tpcc-output-analyze.sh所轉換出來的檔案並沒有換行的符號(而是以n來取代換行符號),所以要再使用如下的指令進行轉換(將字元n轉換成換行符號\n):
隨後,建立gnuplot所需要的組態檔(檔名為graph),內容如圖11所示(利用tpcc-256-data-1.txt):
|
▲圖11 gnuplot所需的「graph」組態檔內容。 |
最後,再執行「gnuplot graph」,就會產生檔名為benchmark.jpg的圖檔,如圖12所示。
|
▲圖12 benchmark.jpg圖檔內容。 |
至此,就能夠完成MySQL資料庫效能測試的測試圖表資訊了。
<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>