sysbench 压测
IP架构
sysbench部署服务器:172.17.100.107
压测服务器:172.17.100.100
MySQL部署目录:/usr/local/mysql
前置工作
1.完成MySQL的安装(MySQL5.7最新版本自动部署脚本:MySQL5.7自动部署脚本)
2.完成动态库文件的安装
yum install -y openssl libtool
#可能遇到的报错
1.在make之前,需要修改lib库,否则会得到一个报错:/usr/bin/ld: cannot find -lmysqlclient_r
因为安装中指向的lib是/usr/local/mysql/lib
cd /usr/local/mysql/lib
ln -s libmysqlclient.so.20.3.9 libmysqlclient_r.so
2.make的时候没有明显错误,执行./sysbench时报错
./sysbench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64
如果报错为
/usr/local/sysbench/bin/sysbench: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
那么就执行
ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64
sysbench安装部分
①叶总优化版(在MGR测试中有坑...常规版本已经更新在文末)
先说一下这个坑:在对单机测试和主从环境的测试中,叶总的版本可用;
但是在后面完成MGR搭建后采用该sysbench进行测试,会出现1032(主键冲突)的报错,目前暂时没有对该报错进行深入研究,只是确定经过大约反反复复10余次测试(中途重装2次MGR)均出现了报错;
下载
在叶总的网站去把sysbench压缩包下载下来
wget http://imysql.com/wp-content/uploads/2014/09/sysbench-0.4.12-1.1.tgz
部署
tar -xf sysbench-0.4.12-1.1.tgz
mv sysbench-0.4.12-1.1 sysbench
cp -r sysbench /usr/local/sysbench
cd /usr/local/sysbench
./autogen.sh
#生成configure文件
./configure --prefix=/usr/local/sysbench/ --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/
注意此处的includes必须是mysql对应的include目录,libs也是mysql对应的lib目录
完成安装
make&&make install
(确认没有报错)
验证安装
/usr/local/sysbench/bin/sysbench --help
如果出现下列文字,说明部署成功
[root@GTID01 bin]# /usr/local/sysbench/bin/sysbench --help
Missing required command argument.Usage: sysbench [general-options]... --test= [test-options]... command
General options:
--num-threads=N number of threads to use [1]
--max-requests=N limit for total number of requests [10000]
...
增加环境变量
echo -e "export PATH=\$PATH:/usr/local/sysbench/bin" >> /etc/profile
source /etc/profile
使用sysbench进行测试的准备工作
前置阅读:sysbench中的lua脚本详解
使用sysbench进行测试
先到被测试的库里建库,建用户,授权(这里通过107去测试100库)
mysql -h 172.17.100.100 -uroot -p
...
create database sbtest; ##因为lua脚本里面这里设置的就是sbtest库,库名需要与脚本里的内容保持一致
create user tpcc@'172.17.100.%' identified by 'tpcc';
grant all privileges on sbtest.* to tpcc@'172.17.100.%';
flush privileges;
会产生报错的操作(将oltp.lua中的mysiam修改成innodb后,会找不到表)
cd /usr/local/sysbench/sysbench/tests/db/
cp oltp.lua oltp_innodb.lua
sed -i 's/myisam/innodb/g' /usr/local/sysbench/sysbench/tests/db/oltp_innodb.lua
测试多表的压测(根据叶总的视频,sysbench支持percona多表,但不支持官方版本,不过我在测试中并未发现官方版本不能使用sysbench的情况)
执行prepare
sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --rand-init=on prepare
...
sysbench 0.5: multi-threaded system evaluation benchmark
Creating table 'sbtest1'...
Inserting 100000 records into 'sbtest1'
...
Creating table 'sbtest10'...
Inserting 100000 records into 'sbtest10
执行run
sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --num-threads=4 --oltp-read-only=off --report-interval=5 --rand-type=uniform --max-time=30 --max-requests=0 --percentile=99 run
--num-threads=4 //线程数为4
--max-time=30 //测试时间为30s
--report-interval=5 //报告打印周期为5s
--oltp-read-only=off //非只读操作测试
--max-requests=0 //最大执行次数这里不做限制,只由max-time进行限制
4线程
8线程
16线程
read: 38024 //读总数,select语句
write: 10864 //写总数,insert、delete、update语句
other: 5432 //其它语句,如commit等
total: 54320 //总的执行语句数
transactions: 2716 (90.31 per sec.) //总的事物数(★每秒处理事物数:TPS★)
read/write requests: 48888 (1625.67 per sec.) //读写请求次数(★每秒的读写次数:QPS★)
other operations: 5432 (180.63 per sec.) //其它操作的每秒执行数
General statistics:
total time: 30.0726s //总时间
total number of events: 2716 //★事物总数★
total time taken by event execution: 480.7371s //所有事务耗时相加(不考虑并行因素)
response time: //应答时间
min: 21.62ms //最小
avg: 177ms //平均
max: 598.59ms //最大
approx. 99 percentile: 421.51ms //99%语句执行时间
Threads fairness: //线程公平性
events (avg/stddev): 169.7500/2.38
execution time (avg/stddev): 30.0461/0.02
需要重点关注的几个测试结果
★总的事物数,每秒事务数TPS,QPS,时间统计信息(最大、最小、平均、99%以上语句响应时间)★
通过sysbench结果来判定数据库的能力主要还是通过TPS
执行清除
sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --oltp-tables-count=10 --oltp-table-size=100000 --num-threads=16 --max-requests=0 --max-time=30 --report-interval=1 --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua cleanup
sysbench 0.5: multi-threaded system evaluation benchmark
Dropping table 'sbtest1'...
Dropping table 'sbtest2'...
Dropping table 'sbtest3'...
②原始版本(该版本目前只测试了MGR环境,常规环境没有验证过,但应该没有问题)
大体的安装和叶总版本差不多,这里就写的简略一些了
前置条件准备
yum install -y openssl libtool gcc make automake pkgconfig libaio-devel vim-common
下载并安装
wget https://github.com/akopytov/sysbench/archive/master.zip
tar -xf master.zip
mkdir -p /usr/local/sysbench/
cd sysbench-master/
./autogen.sh
./configure --prefix=/usr/local/sysbench/ --with-mysql --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib
make
make install
#如果后面验证那一步报错是18,就把下面的20换成18,反正我CenOS6.8的环境不执行下面这句都是报20的错
ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64
echo -e "export PATH=\$PATH:/usr/local/sysbench/bin" >> /etc/profile
source /etc/profile
#验证
sysbench --version
#自行去目标数据库完成建用户(tpcc/tpcc),建库(sbtest)
执行测试
sysbench /usr/local/sysbench/share/sysbench/oltp_read_write.lua --mysql-host=172.17.100.101 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --tables=5 --table_size=100000 --mysql_storage_engine=Innodb prepare
sysbench /usr/local/sysbench/share/sysbench/oltp_read_write.lua --mysql-host=172.17.100.101 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --tables=5 --table_size=100000 --mysql_storage_engine=Innodb --threads=3 --time=600 --warmup-time=10 --report-interval=10 --rand-type=uniform run
晒一个测试图(针对MGR组的单主库进行写操作)
作者:飞翔的Tallgeese
链接:https://www.jianshu.com/p/d0abdc29cd7a
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
sysbench 压测的更多相关文章
- sysbench对MySQL的压测,使用sysbench压测磁盘io
QPS - query per secondTPS - transaction per second 不是特别关注,每个业务场景中事务标准是不一样的 Ⅰ.sysbench测试框架 Ⅱ.常用测试脚本 [ ...
- 05:Sysbench压测-innodb_deadlock_detect参数对性能的影响
目录 sysbench压测-innodb_deadlock_detect参数对性能的影响 一.OLTP测试前准备 二.进行OLTP测试 三.测试结果解读: 四.关于测试后的结论: 五.关于测试后的性能 ...
- 04:Sysbench压测-innodb_flush_log_at_trx_commit,sync_binlog参数对性能的影响
目录 sysbench压测-innodb_flush_log_at_trx_commit,sync_binlog参数对性能的影响 一.OLTP测试前准备 二.MySQL 数据落盘的过程 三.参数说明 ...
- 用sysbench压测MySQL,通过orzdba监控MySQL
1.1 安装sysbench wget https://codeload.github.com/akopytov/sysbench/zip/0.5 unzip 0.5 cd sysbench-0.5/ ...
- sysbench压测过程
1.sysbench安装(sysbench1.1.0) [root@master soft]# ls sysbench1.1.0.zip sysbench1.1.0.zip 解压: [root@ma ...
- 【MySQL】sysbench压测服务器及结果解读
主要压测范围包括CPU测试.磁盘IO测试.线程测试.OLTP测试等,那么sysbench就可以满足我们的压测需求.下面我们简单来看下sysbench的安装使用以及压测结果的解读. 一.sysbench ...
- sysbench压测自装MySQL数据库
压测准备 测试机器 2vCPUs | 4GB | s6.large.2 CentOS 7.6 64bit 建立测试库 create database test_db character set utf ...
- 使用sysbench压测磁盘io
Ⅰ.sysbench安装 cd /usr/local/src yum -y install make automake libtool pkgconfig libaio-devel git clone ...
- sysbench压测mysql
MySQL数据库测试 select 1.先创建数据库test,再准备数据 time /usr/local/sysbench/bin/sysbench --test=oltp --num-threa ...
随机推荐
- myeclipse 添加反编译插件
文件下载地址: 链接: https://pan.baidu.com/s/1th2goaA2aS45kO84dX1Bdg 密码: g1fu 先关闭myeclipse1.下载jad1.5.8g 下载后解压 ...
- ES extended_stats 函数
在进行ES聚合分析的时候,发现了一个非常有用的函数,extended_stats,可以对聚合的结果进行更近一步的分析 ,常见的 count sum avg min max 等都可以一目了然 GET ...
- Python使用selenium模拟点击(一)
本文适合有点Python基础阅读,(没基础的话,相对的比较蒙蔽,争取能让小白能一步一步跟上来) 2019-03-05 14:53:05 前几天由于需要到一个网站进行签到~~听说Python能够模拟请求 ...
- K8S漏洞报告 | 近期bug fix解读&1.13主要bug fix汇总
K8s近期漏洞详解 Kubernetes仪表盘漏洞(CVE-2018-18264) 因为这一漏洞,用户可以“跳过”登录过程获得仪表盘所使用的自定义TLS证书.如果您已将Kubernetes仪表盘配置为 ...
- jQuery属性遍历、HTML操作
jQuery 拥有可操作 HTML 元素和属性的强大方法. jQuery 遍历函数 jQuery 遍历函数包括了用于筛选.查找和串联元素的方法. .add() 将元素添加到匹配元素的集合中. . ...
- Java基础 static限定符的使用 以及【 static实现的 singleton(单例)设计模式】
static实现的 singleton(单例)设计模式 /** static实现的 singleton设计模式 , 使得一个类只能够创建一个static对象 */ 模板设计结构: package Co ...
- Docker 退出不关闭容器以及保存日志到本地
Docker保存日志到本地 docker logs +你需要添加的额外参数 + 容器id > 文件名称 然后查看这个文件就可以了,也可以通过ftp协议下载到本地 Docker退出容器不关闭容器的 ...
- redis cluster 安装配置
实验环境: 三主三从,从负责备份. 192.168.2.201 6381 192.168.2.201 6382 192.168.2.202 6381 192.168.2.202 6382 192.16 ...
- 008_STM32之_keil编译内存大小解析
Program Size: Code=28784 RO-data=6480 RW-data=60 ZI-data=3900 的含义 1. Code: 程序所占用的FLASH大小,存储在FLASH. ...
- learning express step(十三)
learning express error handle code: const express = require('express'); const app = express(); app.g ...