使用Sysbench 进行Mysql 压力测试

安装压力测试工具:sysbench

1> 安装依赖环境包:
yum install -y bzr
yum install -y libtool
下载主程序包:
bzr branch lp:sysbench   //下载到当前目录,文件名为: sysbench
开始安装:
cd sysbench
./autogen.sh
./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib
 make
 make install
拷贝执行文件到环境变更下面:
cp bin/sysbench /usr/local/bin/

查询帮助命令:
[[email protected] net]# sysbench --help

数据测试参数说明:

测试工具:sysbench 0.5
测试流程:通过对每种规格的实例进行压测,得出每种规格的RDS实例的性能表现
测试模型:采用OLTP模型(读写比例为7:3)和InnoDB引擎。大致命令如下:
 
常用命令参数:
/usr/local/sysbench-0.5/bin/sysbench
     --mysql-host=test.mysql.rds.aliyuncs.com           #数据库host
     --mysql-port=3306                                              #数据库端口
     --mysql-user=your_username                             #数据库用户名
     --mysql-password=your_password                      #数据库密码
     --mysql-db=your_db_for_test                              #数据库名
     --oltp-tables-count=10                        #模拟的表的个数,规格越高该值越大
     --oltp-table-size=6000000                  #模拟的每张表的行数,规格越高该值越大
     --num-threads=50                              #模拟的并发数量,规格越高该值越大
     --max-requests=100000000               #最大请求次数
     --max-time=20                           #最大测试时间(与--max-requests只要有一个超过,则退出)
     --report-interval=1                     #每1秒打印一次当前的QPS等值
     --test=/tmp/sysbench-0.5/sysbench/tests/db/oltp.lua    #选用的测试脚本(lua),此脚本可以从sysbench-0.5源代码文件目录下找
     [prepare | run | cleanup]           #prepare准备数据,run执行测试,cleanup清理数据

--oltp_table_count=1:指定测试过程中表的个数,0.5新增,0.4整个测试过程只有一个表。 
--oltp-table-size=:指定表的大小,如果指定1000,那么它会往表里初始化1000条数据 
--rand-init=on:是否随机初始化数据,如果不随机化那么初始好的数据每行内容除了主键不同外其他完全相同。 
--num-threads=:测试过程中并发线程数,看测试要求来定并发压力。 
--otlp-read-only=off:知否只读测试 
--report-interval=10:每隔多久打印一次统计信息,单位秒,0.5新增

参考页面:http://help.aliyun.com/view/11108238_13440406.html

测试初始化数据:
[[email protected] sysbench]# sysbench  --test=tests/db/oltp.lua  --mysql-table-engine=innodb --oltp-table-size=1000000  --max-requests=5 --max-time=300 --num-threads=16 --oltp-tables-count=10 
--report-interval=10  --mysql-host=localhost --mysql-port=‘3306‘ --mysql-user=‘xiong‘  --mysql-password=‘123456‘  --mysql-db=‘test‘ prepare

#导数据 耗时较长

./sysbench –test=tests/db/oltp.lua –max-time=7200 –oltp-dist-type=uniform –max-requests=0 \

–mysql-user=root –mysql-table-engine=innodb –oltp-table-size=5000000 –oltp-tables-count=48 \

–oltp-range-size=40 –oltp-point-selects=10 –oltp-simple-ranges=1 –oltp-sum-ranges=1 \

–oltp-order-ranges=1 –oltp-distinct-ranges=1 –oltp-index-updates=1 –oltp-non-index-updates=1 \

–num-threads=200 –mysql-socket=/u01/mysql/run/mysql.sock \

–oltp-read-only=on perpare

#开始压测 混合读写

./sysbench –test=tests/db/oltp.lua –max-time=7200 –oltp-dist-type=uniform –max-requests=0  –mysql-user=root –mysql-table-engine=innodb –oltp-table-size=5000000 –oltp-tables-count=48 \
–oltp-range-size=40 –oltp-point-selects=10 –oltp-simple-ranges=1 –oltp-sum-ranges=1 –oltp-order-ranges=1 –oltp-distinct-ranges=1 –oltp-index-updates=1 –oltp-non-index-updates=1 \
–num-threads=200 –mysql-socket=/u01/mysql/run/mysql.sock  run

#开始压测 只读

./sysbench –test=tests/db/oltp.lua –max-time=7200 –oltp-dist-type=uniform –max-requests=0  –mysql-user=root –mysql-table-engine=innodb –oltp-table-size=5000000 –oltp-tables-count=48 \
–oltp-range-size=40 –oltp-point-selects=10 –oltp-simple-ranges=1 –oltp-sum-ranges=1  –oltp-order-ranges=1 –oltp-distinct-ranges=1 –oltp-index-updates=1 –oltp-non-index-updates=1 \
–num-threads=200 –mysql-socket=/u01/mysql/run/mysql.sock  –oltp-read-only=on run

操作系统参数测试:

CPU性能测试
  根据官网的介绍可知:CPU测试使用64位整数,测试计算素数直到某个最大值所需要的时间。
[[email protected] net]# sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.5:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1
Random number generator seed is 0 and will be ignored

Primer numbers limit: 20000
Threads started!

General statistics:
    total time:                          34.3813s
    total number of events:              10000
    total time taken by event execution: 34.3759s
    response time:
         min:                                  3.40ms
         avg:                                  3.44ms
         max:                                  8.00ms
         approx.  95 percentile:               3.45ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   34.3759/0.00

线程(thread)测试
  测试线程调度器的性能。对于高负载情况下测试线程调度器的行为非常有用:
[[email protected] net]# sysbench --test=threads --num-threads=64 run
sysbench 0.5:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 64
Random number generator seed is 0 and will be ignored

Threads started!

General statistics:
    total time:                          2.3363s
    total number of events:              10000
    total time taken by event execution: 148.9687s
    response time:
         min:                                  0.25ms
         avg:                                 14.90ms
         max:                                201.12ms
         approx.  95 percentile:              67.48ms

Threads fairness:
    events (avg/stddev):           156.2500/16.95
    execution time (avg/stddev):   2.3276/0.00

互斥锁(mutex)
  测试互斥锁的性能,方式是模拟所有线程在同一时刻并发运行,并都短暂请求互斥锁
[[email protected] net]# sysbench --test=mutex --num-threads=16 --mutex-num=2048 --mutex-locks=1000000 --mutex-loops=5000 run    
sysbench 0.5:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Random number generator seed is 0 and will be ignored

Threads started!
General statistics:
    total time:                          7.7748s
    total number of events:              16
    total time taken by event execution: 123.2084s
    response time:
         min:                               7550.27ms
         avg:                               7700.52ms
         max:                               7774.71ms
         approx.  95 percentile:            7773.72ms

Threads fairness:
    events (avg/stddev):           1.0000/0.00
    execution time (avg/stddev):   7.7005/0.07

内存测试测试了内存的连续读写性能
上面这条语句指定了整个测试过程中,传输2G的数据量,每个block的大小为8K(大写的K)。 测试结果如下所示,我们最关心的是吞吐量(8030.45MB/sec),和后面的磁盘io 测试结果比较可知,内存的连续读写比磁盘的连续读写快十几倍
[[email protected] net]# sysbench --test=memory --memory-block-size=8K --memory-total-size=2G  --num-threads=16 run
sysbench 0.5:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Random number generator seed is 0 and will be ignored

Threads started!
Operations performed: 262144 (695055.19 ops/sec)

2048.00 MB transferred (5430.12 MB/sec)

General statistics:
    total time:                          0.3772s
    total number of events:              262144
    total time taken by event execution: 3.2142s
    response time:
         min:                                  0.00ms
         avg:                                  0.01ms
         max:                                  2.28ms
         approx.  95 percentile:               0.05ms

Threads fairness:
    events (avg/stddev):           16384.0000/578.01
    execution time (avg/stddev):   0.2009/0.00

文件IO基准测试
  文件IO(fileio)基准测试可以测试系统在不同IO负载下的性能。这对于比较不同的硬盘驱动器,不同的RAID 卡,不同的RAID 模式,都很有帮助。可以根据测试结果调整IO子系统。文件IO基准测试模拟了很多InnoDB 的IO特性。
  测试的第一步是准备(Prepare)阶段,生成测试用到的数据文件,生成的数据文件至少要比内存大。 如果文件中的数据能完全放入内存中,则操作系统 缓存大部分的数据,导致测试结果无法体现IO密集型的工作负载。首先通过下面的命令创建一个数据集:
  sysbench --test=fileio --file-total-size=40G prepare
  这个命令会在当前工作目录下创建测试文件,后续的运行(run)阶段将通过读写这些文件进行测试。 第二步就是运行(run)阶段,针对不同的IO 类型有不同的测试选项:
  seqwr 顺序写入
  seqrewr 顺序重写
  seqrd 顺序读取
  rndrd 随机读取
  rndwr 随机写入
  rndrw 混合随机读/写
  下面的命令运行文件I/O混合随机读/写基准测试:
  sysbench --test=fileio --file-total-size=40G --file-test-mode=rndrw\
  --init-rng=on --max-time=300 --max-requests=0 run
 simple 与 --oltp-read-only 的区别
  simple模式和在complex模式下开启read-only选项都只包含select语句。但是 simple 模式只包含最简单的select语句,相反地,complex 模式中,如果我们开启read-only 选项,即--oltp-read-only=on,则会包含复杂的SQL语句。如:
  SELECT SUM(K) FROM sbtest WHERE id BETWEEN N and M
  SELECT DISTINCT c FROM sbtest WHERE id BETWEEN N and M ORDER BY c
  测试自有的存储引擎
  测试自有的存储引擎需要告诉sysbench,这个存储引擎是否支持事务。
  如下所示:
  准备
  sysbench --test=oltp --mysql-table-engine=tnt --mysql-engine-trx=yes \
  --oltp-table-size=100000 --mysql-user=root --mysql-db=test \
  --mysql-socket=/data/ntse/lmx/sysbench/var/mysqld.sock \
  prepare
  测试
  sysbench --test=oltp --mysql-table-engine=tnt --mysql-engine-trx=yes \
  --oltp-table-size=100000 --mysql-user=root --mysql-db=test \
  --mysql-socket=/data/ntse/lmx/sysbench/var/mysqld.sock \
  --oltp-test-mode=complex --num-threads=16 --max-time=720 \
  --max-requests=0 run
  清除
  sysbench --test=oltp --mysql-table-engine=tnt --mysql-engine-trx=yes \
  --oltp-table-size=100000 --mysql-user=root --mysql-db=test \
  --mysql-socket=/data/ntse/lmx/sysbench/var/mysqld.sock \
  clean
  4. sysbench 0.5

时间: 2024-11-04 09:07:47

使用Sysbench 进行Mysql 压力测试的相关文章

使用sysbench对mysql压力测试

使用sysbench对mysql压力测试 sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.关于这个项目的详细介绍请看:https://github.com/akopytov/sysbench .它主要包括以下几种方式的测试: cpu性能 磁盘io性能 调度程序性能 内存分配及传输速度 POSIX线程性能 数据库性能(OLTP基准测试) sysbench的数据库OLTP测试支持MySQL.PostgreSQL.Oracle,目前主要用

MySQL压力测试工具

工具名称:mysqlha_sysbench.sh 工具用途:用于MySQL压力测试  (2种功能:填充数据&&测试数据) 工具参数: options: -P 需要测试的端口-D 需要测试的db名字-H 需要测试的host-S 填充&&测试 表的数据量,default 100w-C 填充&&测试 表的数量, default 1-T prepare and run ,prepare is 制造数据 run is 开始测试 ,default run-O on an

MySQL压力测试工具使用

一.MySQL自带的压力测试工具--Mysqlslap mysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.mysqlslap为mysql性能优化前后提供了直观的验证依据,系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户流量上限及其抗压性等问题. 1.更改其默认的最大连接数 在对MySQL进行压力测试之前,需要更改其默

mysql压力测试

1,使用 mysqlslap  进行压力测试 mysqlslap  --defaults-file=/etc/my.cnf --concurrency=200 --iterations=1 --number-int-cols=1 --auto-generate-sql --auto-generate-sql-load-type=write --engine=myisam,innodb --number-of-queries=200 -S/home/mysql/mysql.sock  --debu

MySQL Study之--MySQL压力测试工具mysqlslap

MySQL Study之--MySQL压力测试工具mysqlslap 一.Mysqlslap介绍 mysqlslap是MySQL5.1之后自带的benchmark基准测试工具,类似Apache Bench负载产生工具,生成schema,装载数据,执行benckmark和查询数据,语法简单,灵活,容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.mysqlslap为mysql性能优化前后提供了直观的验证依据,笔者建议系统运维人员应该掌

mysql 压力测试工具

mysql  压力测试工具 自从mysql5.1 之后就自带有一个压力测试的工具 mysqlslap mysqlslap可以自动生成测试脚本 ,也可以使用第三方提供的测试脚本. mysqlslap可以测试的指标 (1).系统的最大并发度 (2).不同存储引擎之间的性能比较 (3).系统同一变量设置为不同值时的性能比较 (4).不同版本之间的性能比较 mysqlslap 的具体使用方法可以直接查看帮助   mysqlslap --help 常用的参数有: --concurrency代表并发数量,多

tcpcopy,模拟在线MySQL压力测试的好帮手

主要信息来自:http://code.google.com/p/tcpcopy/ tcpcopy是一个基于底层的应用请求复制(所有基于tcp的packets)开源项目,可用于替代ab做在线模拟压力测试,可转发各种在线请求到测试服务器上,进行较为详尽的近乎实际的测试,从而避免了新业务.系统上线带来的潜在问题. tcpcopy的四大功能: 1)分布式压力测试,将多个前段请求集中到某个后端进行压力测试2)上线前测试,检验新系统可靠性,提前发现潜在问题3)对比测试,同样请求,针对不同或不同版本程序,可以

MySQL压力测试(1)-mysqlslap

mysqlslap是从MySQL的5.1.4版开始就开始官方提供的压力测试工具.通过模拟多个并发客户端并发访问MySQL来执行压力测试,同时提供了较详细的SQL执行数据性能报告,并且能很好的对比多个存储引擎(MyISAM,InnoDB等)在相同环境下的相同并发压力下的性能差别. 语法 Usage: mysqlslap [OPTIONS]  常用参数 -auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力. --auto-

Mysql 压力测试工具 mysqlslap

转载至文章作者:杜亦舒 链接:https://www.sdk.cn/news/4512 来源:SDK.cn 摘要:mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况 mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况 mysql slap 的一个主要工作场景就是对数据库服务器做基准测试 例如我们拿到了一台服务器,准备做为数据库服务器,