- 背景介绍
我们如何判断一台数据服务器的性能呢?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