MySQL压测工具-Sysbench

一、软件简介

SysBench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。它主要包括以下几种方式的测试:

cpu性能,磁盘io性能,调度程序性能,内存分配及传输速度,POSIX线程性能,数据库性能(OLTP基准测试) 。

目前sysbench主要支持 MySQL,pgsql,oracle 这3种数据库。

二、环境准备

2.1 服务器准备

序号 服务器类型 CPU 内存 IP地址 系统环境
1 CentOS 7 四核 4G 192.168.61.65 MySQL 5.7

2.2 Sysbench文件下载

下载地址:https://github.com/akopytov/sysbench/tags
MySQL压测工具-Sysbench_第1张图片

2.3 下载文件上传到指定文件并解压

MySQL压测工具-Sysbench_第2张图片
# 解压文件
tar -zxvf sysbench-1.0.20.tar.gz
# 移动文件到home文件下
mv sysbench-1.0.20 /home/

三、Sysbench安装

3.1 安装依赖库

yum install automake libtool -y

3.2 开始安装

[root@localhost sysbench-1.0.20]# ./autogen.sh
[root@localhost sysbench-1.0.20]# ./configure
#ERROR: cannot find MySQL libraries. If you want to compile with MySQL support 没找到mysql库 需要用参数指定下 --with-mysql-includes和--with-mysql-libs

测试主机MySQL通过yum安装,以下为安装后的默认配置路径:

配置文件:/etc/my.cnf
日志文件:/var/log//var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid

  1. (数据库目录
    /var/lib/mysql/
  2. 配置文件
    /usr/share /mysql(mysql.server命令及配置文件)
  3. 相关命令
    /usr/bin(mysqladmin mysqldump等命令)
  4. 启动脚本
    /etc/rc.d/init.d/(启动脚本文件mysql的目录)
# 配置MySQL incluldes与libs
[root@localhost sysbench-1.0.20]# ./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib64/mysql
[root@localhost sysbench-1.0.20]# make

3.3 MySQL找不到include文件mysql.h

在linux里面安装了mysql之后(yum install mysql-server )发现找不到mysql头文件mysql.h。

# 安装 mysql-devel
yum install mysql-devel
# 切换路径查看文件
cd /usr/include/mysql
# 查看include文件的路径
mysql_config --include

3.4 验证安装

[root@localhost sysbench-1.0.20]# sysbench --help
[root@localhost sysbench-1.0.20]# sysbench --version
sysbench 1.0.20
MySQL压测工具-Sysbench_第3张图片

四、数据库压测

4.1 创建测试数据库

# 登录mysql
mysql -uroot -proot
# 创建数据库
mysql> create database sbtest;
MySQL压测工具-Sysbench_第4张图片

4.2 准备数据

# 创建10个并发,10张表,20万条数据,测试120秒,每10秒报告一次
sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.61.65 --mysql-port=3306 --mysql-user=root --mysql-password=root --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=200000 --threads=10 --time=120 --report-interval=10 prepare
MySQL压测工具-Sysbench_第5张图片

4.3 压测数据

# 创建10个并发,10张表,20万条数据,测试120秒,每10秒报告一次,日志写到home/test/mysysbench.log
sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.61.65 --mysql-port=3306 --mysql-user=root --mysql-password=root --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=200000 --threads=10 --time=120 --report-interval=10 run >> /home/test/mysysbench.log

本此测试为机械硬盘:

TPS:1002 per/sec

QPS:20038 per/sec

Latency-95th percentile:前95%的请求的最大响应时间 19.29ms

MySQL压测工具-Sysbench_第6张图片

4.4 清除数据

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.61.65 --mysql-port=3306 --mysql-user=root --mysql-password=root cleanup
image-20210129174028127

五、测试总结

  1. 尽量不要在MySQL服务器运行的机器上进行测试,一方面可能无法体现网络(哪怕是局域网)的影响,另一方面,sysbench的运行(尤其是设置的并发数较高时)会影响MySQL服务器的表现。
  2. 可以逐步增加客户端的并发连接数(–thread参数),观察在连接数不同情况下,MySQL服务器的表现;如分别设置为10,20,50,100等。
  3. 一般执行模式选择complex即可,如果需要特别测试服务器只读性能,或不使用事务时的性能,可以选择simple模式或nontrx模式。
  4. 如果连续进行多次测试,注意确保之前测试的数据已经被清理干净。

六、参考链接

  1. Yum安装MySQL以及相关目录路径和修改目录
  2. MySql性能测试工具-sysbench
  3. 在linux里面安装mysql之后,找不到include文件mysql.h
  4. 数据库性能测试:sysbench用法详解
  5. 详解MySQL基准测试和sysbench工具
  6. mysql+mycat压力测试一例

你可能感兴趣的:(数据库,MySQL,Linux,linux,mysql,Sysbench,数据库)