SysBench在windows下的压力测试教程(排坑,综合)

发布于:2024-07-03 ⋅ 阅读:(13) ⋅ 点赞:(0)

SysBench在windows下的压力测试教程

1.环境配置

官方开源 https://github.com/akopytov/sysbench

由于sysbench已经放弃了在windows上支持,所以可以构建windows下的linux系统进行测试(wsl),环境配置流程为:首先安装wsl,之后在wsl中安装sysbench,mysql,进一步在通过wsl连接主机(windows)的数据库,之后就可以进行测试了

1.1 wsl安装

巨硬官方说明 https://learn.microsoft.com/zh-cn/windows/wsl/install

https://learn.microsoft.com/zh-cn/windows/wsl/setup/environment

划重点:在管理员下运行powershell

wsl --install

之后打开ubuntu应用程序(虚拟机),进行用户名及密码配置(首次)

1.2 wsl(ubuntu)中安装sysbench

参考github官方开源readme

划重点,直接运行:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench

测试是否安装成功可以浅浅的输入一下sysbench,确认是否有输出

1.3 wsl中安装mysql

参考链接: https://blog.csdn.net/weixin_45626288/article/details/133220238

划重点:

sudo apt update
# 查看可使用的安装包
sudo apt search mysql-server
# 安装最新版本
sudo apt install -y mysql-server
# 安装指定版本(安装最新版本,当前命令不用运行)
sudo apt install -y mysql-server-8.0
# 设置开机启动
sudo systemctl start mysql
sudo systemctl enable mysql
# 检查mysql状态
sudo systemctl status mysql

1.4 在wsl中连接主机数据库

参考链接: https://www.yisu.com/jc/535493.html

由于数据库建立在windows中,压力测试并不想在虚拟机中重新构建数据库,因此需要连接如何在wsl中连接主机数据库

  • 首先获取主机ip,打开主句powershell,输入ipconfig,查看wsl虚拟机的ip地址,记住该地址如192.168.1.1

  • 然后在wsl中尝试能否使用mysql数据库,输入:

    mysql -h 192.168.1.1 -uusername -ppassword
    

    注意-u之后为用户名,-p之后为密码

  • 判断连接成功,即可进行下一步测试啦

2. 测试说明

参考链接:

https://www.bilibili.com/video/BV1ko4y187er/?spm_id_from=333.337.search-card.all.click

https://blog.csdn.net/oschina_41731918/article/details/128000593

https://blog.csdn.net/squirrel100/article/details/120290157

  • 划重点:注意指标
指标 英文含义 说明
QPS Query Per Second 数据库每秒执行的SQL数,包含insert、select、update、delete等。
TPS Transaction Per Second 数据库每秒执行的事务数,每个事务中包含18条SQL语句。
  • 划重点:测试实例
# 线程数=400 
# 已提前在mysql创建数据库obliviate,测试准备阶段将在该数据库生成10个表,每个表大小为1000
# 每隔3s输出一次中间结果,测试时间限制在60s
# 准备阶段:
sysbench --test=/usr/local/share/sysbench/oltp_write_only.lua --mysql-host=host --mysql-port=3306 --mysql-user=root --mysql-password=password --mysql-db=obliviate --report-interval=3 --time=60 --threads=400 --tables=10 --table-size=1000 prepare
# 运行阶段:
sysbench --test=/usr/local/share/sysbench/oltp_write_only.lua --mysql-host=host --mysql-port=3306 --mysql-user=root --mysql-password=host --mysql-db=obliviate --report-interval=3 --time=60 --threads=400 --tables=10 --table-size=1000 run
# 清理阶段:
sysbench --test=/usr/local/share/sysbench/oltp_write_only.lua --mysql-host=host --mysql-port=3306 --mysql-user=root --mysql-password=password --mysql-db=obliviate --report-interval=3 --time=60 --threads=400 --tables=10 --table-size=1000 cleanup
# host地址和密码请换成自己的

**此处有个小问题:**路径/usr/local/share/sysbench可能并不存在,我的地址时/usr/share/sysbench可以去user中自己翻一翻路径

3. 常见问题

3.1 wsl安装问题

参考链接: https://www.cnblogs.com/Sysyphus42/p/17916303.html

3.1.1 无法解析服务器的名称或地址

尝试了网上的更改网络适配器设置和网络属性的方法并未解决问题.

解决办法: 用梯子

3.1.2 “WslRegisterDistribution failed with error: 0x8004032d”

解决方法: 打开控制面板 – 程序 – 启动或关闭Windows功能 – 勾选"适用于Linux的Windows子系统" 和 “虚拟机平台” – 点击"确定" – 重启计算机

再次打开Ubuntu后输入用户名和密码, 登陆成功即可使用.

3.2 压力测试问题

Error: Can’t create more than max_prepared_stmt_count statements (current value: 16382)

参考链接:https://blog.csdn.net/zgj_online/article/details/120993335

问题出现的原因应该是线程数设置过多以及读写数据太频繁与设置的预编译语句限制有冲突,尝试修改限制次数,解决

划重点:在主机的mysql数据库管理软件中输入以下语句,加大预编译限制,问题解决

show global status like 'com_stmt%';
set global max_prepared_stmt_count=1048576;