-
背景介紹
我們如何判斷一臺數據服務器的性能呢?sysbench是一種行業基準,它通過各種指標來判斷一個數據服務器的負載情況。 -
安裝sysbench
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench
- 測試 CPU
CPU 測試計算素數,直到某個指定值所需要的時間。
CPU 基準測試時可以指定線程數量和素數上限
sysbench cpu help可以查看幫助文檔
sysbench --cpu-max-prime=1000 --threads=2 cpu run
4. 測試內存
內存測試時,會分配一個內存緩衝區並在此執行讀寫操作,每次操作都會讀完或寫滿緩衝區。然後重複此操作直到達到指定大小(–memory-total-size)。可以提供線程數(–threads),不同的緩衝區大小(–memory-block-size)和請求類型(讀或寫,順序或隨機),sysbench memory help可以查看幫助文檔
sysbench --threads=4 --memory-block-size=8k --memory-total-size=4G memory run
5. 測試 threads
threads 測試 時,每個工作線程將被分配一個 mutex鎖。每次執行時,每個線程將循環–thread-yields 次,循環時這個線程會鎖定,sysbench threads help可以查看幫助文檔
sysbench --thread-yields=2000 --thread-locks=8 threads run
6. 測試 mutex
mutex鎖 測試 時,sysbench 將爲每個線程運行一個請求。這個請求首先會對 CPU 施加一些壓力(使用一個簡單的增量循環,通過 --mutex-loops 參數設置),然後隨機使用一個 mutex,遞增一個全局變量並再次釋放鎖。這個過程根據鎖的個數(–mutex-locks)多次重複。隨機 mutex 取自大小爲 --mutex-num 的參數池,sysbench mutex help可以查看幫助文檔
sysbench mutex run
7. 測試 file io
1).創建測試文件
sysbench --file-total-size=2G fileio prepare
2)測試
通過隨機訪問文件裏的內容來測試讀寫速度
sysbench fileio help可以查看幫助文檔
在這裏插入代碼片
3)清除測試文件
sysbench --file-total-size=2G fileio cleanup
- OLTP 基準測試
1)創建表
sysbench --db-driver=mysql --mysql-user=root --mysql-password=123456 --mysql-db=oltp --range_size=100 --table_size=10000 --tables=2 --threads=2 --events=0 --time=60 --rand-type=uniform /usr/share/sysbench/oltp_read_only.lua prepare
2)測試
最新版本的 sysbench 把 OLTP 這個曾經的內建測試類型移除了,如果要用,需要在命令中指定測試類型的位置用 /usr/share/sysbench/oltp_read_only.lua 腳本代替測試類型,sysbench oltp_read_only help可以查看幫助文檔
sysbench --db-driver=mysql --mysql-user=root --mysql-password=123456 --mysql-db=oltp --range_size=100 --table_size=10000 --tables=2 --threads=2 --events=0 --time=60 --rand-type=uniform /usr/share/sysbench/oltp_read_only.lua run
3)清理創建的表
sysbench --db-driver=mysql --mysql-user=root --mysql-password=123456 --mysql-db=oltp --range_size=100 --table_size=10000 --tables=2 --threads=2 --events=0 --time=60 --rand-type=uniform /usr/share/sysbench/oltp_read_only.lua cleanup