sysbench简介

Sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。它主要包括以下几种方式的测试:cpu性能,磁盘io性能,线程调度性能,内存分配及传输速度和数据库性能。由于本人是dba,因此重点关注sysbench测试数据库的场景。目前sysbench支持mysql,postgreSQL,oracle三种数据源。

下载&安装

1)  下载

通过http://download.csdn.net/download/jungeshidai/8854157页面下载sysbench0.5版本

2)  编译安装

  1. tar -zxvf sysbench-0.5.tar.gz
  2. cd sysbench-0.5
  3. ./autogen.sh
  4. ./configure
  5. ./make
  6. ./make install

3)  可能遇到的问题

a) lua脚本,因为sysbench0.5的测试用例改为lua,若有童鞋使用0.5版本,执行命令时仍然采用老的方式,--test=oltp,就会出现报错

“PANIC: unprotected error in call to Lua API (cannot open oltp: No
such file or directory)”,因此注意将--test=oltp改为./tests/db/oltp.lua即可。

b) 运行oltp测试时,默认会在sbtest库里面建表测试,但是库需要自己预先建立好,否则就会出现连不上database的错误,当然,也可以通过参数--mysql-db指定。

测试过程

测试主要包括准备数据阶段,测试阶段和清理阶段。

1)  准备阶段

  1. sysbench --test=./tests/db/oltp.lua --mysql-table-engine=innodb --oltp-table-size=100000 --mysql-socket=/u01/my3306/run/mysql.sock --mysql-user=chuck --mysql-host=localhost --mysql-password=chuck --num-threads=20 prepare

2)  测试阶段

  1. sysbench --test=./tests/db/oltp.lua --mysql-table-engine=innodb --num_threads= --oltp-table-size= --mysql-db=test
  2. --mysql-user=chuck --oltp-tables-count= --mysql-password=chuck run

3)  清理阶段

sysbench --test=./tests/db/select.lua --mysql-table-engine=innodb --num_threads=10 --oltp-table-size=100000 --mysql-db=test --mysql-user=chuck --oltp-tables-count=10 --mysql-password=chuck cleanup

重要参数

--test=STRING
指定测试用例,sysbench0.5所有测试用例采用lua脚本编写,用户可以根据需求写符合自己测试的脚本,因此非常灵活。比如:--test=./tests/db/select.lua

--max-requests=N,设置请求的数目,默认值是10000

--max-time=N,设置执行的时间,默认是0,即没有限制
这两个参数可以配合起来使用,默认值表示,执行完10000个请求,不受时间限制。因为请求可以多种多样,对于不同的lua脚本,对应的就是不同的请求,比如
insert.lua,delete.lua,select.lua等。当然你也可以编辑自己的lua脚本,封装成为一个event。因此,对于不同类型的测试用例,执行时间会相差很大。对于运行时间很快的测试用例,可以增大max-requests的值,对于运行很慢的测试用例,可以通过设置max-time来限制运行时常。

--report-interval=N,设置打印的时间间隔,默认值是0,设置执行的时长,以秒为单位对于很长时间的测试用例,为了得到实时的测试信息,可以设置该参数,否则,只有一直干等,运行结束后才能看到测试报告。

--percentile=N,设置采样比例,默认是95%

--num-threads=N,设置并发的线程数目

执行结果解读

这里以oltp.lua测试用例的测试结果来简单说明下。

  1. sysbench --test=./tests/db/oltp.lua --num_threads= --oltp-table-size= --mysql-db=test --mysql-user=chuck --oltp-tables-count= --mysql-password=chuck --max-requests= --report-interval= --percentile= run

1)  实时信息

每5s采集一次实时信息,tps表示事务数目,writes/reads分别表示平均每秒写和读的次数

[   5s] threads: 10,
tps: 31.80, reads/s: 460.79, writes/s: 128.00

[  10s] threads: 10,
tps: 35.40, reads/s: 502.00, writes/s: 143.00

[  15s] threads: 10,
tps: 31.20, reads/s: 438.20, writes/s: 124.20

[  20s] threads: 10,
tps: 33.00, reads/s: 463.60, writes/s: 130.40

[  25s] threads: 10,
tps: 33.60, reads/s: 462.40, writes/s: 134.40

[  30s] threads: 10,
tps: 34.20, reads/s: 484.80, writes/s: 137.20

[  35s] threads: 10,
tps: 31.00, reads/s: 438.20, writes/s: 124.40

[  40s] threads: 10,
tps: 32.20, reads/s: 445.40, writes/s: 128.60

2) 汇总信息

OLTP test statistics:
    queries performed:
        read:                            140000
       
write:                           40000
        other:                           20000
        total:                            200000
    transactions:                     10000  (32.89 per sec.)  //总共执行了10000个事务
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:           180000 (592.04 per
sec.) //读写请求有180000,一个事务包含多个读写请求
    other operations:                20000  (65.78 per sec.)

Test execution summary:
    total time:                          304.0326s  //总共运行了5分钟
    total number of events:        10000
    total time taken by event execution:
3039.9491s
    per-request statistics:
         min:                                 27.73ms
         avg:                               
303.99ms
         max:                              
1940.30ms
         approx.  95 percentile:      635.58ms   //95%的平均耗时为635ms,这里对统计值有点疑问,95%的是635ms,而平均值是300ms。

Threads fairness:
    events (avg/stddev):              1000.0000/14.47
    execution time (avg/stddev):   303.9949/0.02

参考文档

http://www.tuicool.com/articles/iQFF3i

sysbench测试工具的更多相关文章

  1. sysbench压力测试工具简介和使用(二)

    sysbench压力测试工具使用: 2.1    测试数据库服务器的硬件配置信息如下: CPU:      24核心线程数,Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00G ...

  2. sysbench压力测试工具简介和使用(一)

    sysbench压力测试工具安装和参数介绍 一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据 ...

  3. sysbench压力测试工具安装和参数介绍

    一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL. ...

  4. sysbench 压力测试工具

    一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL. ...

  5. sysbench(mysql测试工具 )

    目录 一.基准测试简介 1.什么是基准测试 2.基准测试的作用 3.基准测试的指标 4.基准测试的分类 二.sysbench 1.sysbench简介 2.sysbench安装 3.sysbench语 ...

  6. show processlist,sysbench压力测试工具

    processlist.sh 记录数据库的状态 #!/bin/bash while true do mysql -uroot -pwangxiaohu -e 'show processlist\G'| ...

  7. 【转帖】sysbench压力测试工具简介

    sysbench压力测试工具简介 https://www.cnblogs.com/pdlife/p/6698957.html 一.sysbench压力测试工具简介: sysbench是一个开源的.模块 ...

  8. sysbench压力测试工具简介

    一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL. ...

  9. [数据库]000 - 🍳Sysbench 数据库压力测试工具

    000 - Sysbench 数据库压力测试工具 sysbench 是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有 ...

随机推荐

  1. 【C#进阶系列】14 字符、字符串和文本编码

    本来写了蛮多的,结果因为重启了一下机器导致写的东西都没了. 然后再回想之前写了什么,反而更像是把知识提炼了一番. 关于字符 字符什么的只要记住.net里面都用的Unicode编码就好.字符和数字之间转 ...

  2. 设置MySQL服务自动运行

    一般情况下,MySQL安装以后是自动运行的,不知道我这台机器是什么原因,MySQL不能自动运行,每次开机后都要手动运行mysqld.exe,比较麻烦,于是用以下方法将MySQL自动启动: 1. 运行c ...

  3. PHP中利用GD实现的柱状图

    PHP中利用GD实现的柱状图,自己写的一个画柱状图的类,上代码. <?php Class Chart{ private $image; // 定义图像 private $title; // 定义 ...

  4. Scalaz(7)- typeclass:Applicative-idomatic function application

    Applicative,正如它的名称所示,就是FP模式的函数施用(function application).我们在前面的讨论中不断提到FP模式的操作一般都在管道里进行的,因为FP的变量表达形式是这样 ...

  5. Yii2.0学习笔记:第一个页面Saying Hello

    Controller目录下创建TestController.php 复制下面代码,yii跟tp一样,全程命名空间 <?php namespace app\controllers; use yii ...

  6. ErrorExecution failed for task 'apptransformClassesWithDexForDebug'

    [原因]: 在工程中既有本地的lib.jar文件,又有compile链接.

  7. 为mongodb数据库添加安全账户

    最近的数据库服务器有些不稳定,遇到了黑客的骚扰,mongodb的安全存在一些漏洞.首要任务是给数据库添加账号.之前大家都习惯于mongodb的不加安全账号和密码来连接数据库,那么问题是添加了安全账户后 ...

  8. ssh架构简单解释和vo po解释

      Struts.spring.Hibernate在各层的作用 1)struts 负责 web层. ActionFormBean 接收网页中表单提交的数据,然后通过Action 进行处理,再Forwa ...

  9. (3)JSTL的fn方法库

    fn:functions,fn之所以称之为方法库,是因为fn使用不像core,fmt标签那样遵循<prefix:tagName>的格式,而是遵循fn:methodName()的格式 < ...

  10. 初识Web 服务(即Web Service)

    一.什么是Web服务 简单来说就是在Internet上提供的这种服务,我们称这种服务为Web服务. 二.Web服务的主要目标? 是支持跨平台的可互操作性. 三.Web服务的优势 四.Web服务提供了一 ...