一.sysbench简介

Sysbench是一款开源的、跨平台的、模块化的、多线程的性能测试工具,通过高负载地运行在数据库上,可以执行CPU、内存、线程、IO、数据库等方面的性能测试。用于评估操作系统的性能参数。

目前主要支持的数据库有mysql、oracle、postgresql。

可评估的系统性能参数有:

1.CPU性能

2.内存分配与传输速度测试

3.互斥体测试

4.文件I/O性能

5.线程调度性能

6.数据库服务性能(OLTP基准)

本来sysbench主要是为mysql编写的benchmark。但是现在SysBench将进一步扩展,以支持更多的数据库backends,distributed benchmarks和第三方插件模块。

sysbench按照指定的数量开启线程,每个线程与mysql建立一个连接,每个线程不停地进行事务操作,打开事务,然后进行一些查询、更新、插入操作,提交事务,再开始新的事务;所有的sql只访问一个表-sbtest,是由sysbench的prepare命令建好的。其中的记录数,也是在prepare时指定好并创建的。测试结束,会有一个统计结果,包括例如每秒事务数、平均响应时间等等。

二、sysbench下载与安装

1.下载:使用epel源的bzr客户端下载sysbench(这里不做epel源配置说明)

[root yum.repos.d]$ yum install bzr -y
.....
.......
Running Transaction
Installing : python-paramiko-1.7.5-2.1.el6.noarch 1/2
Installing : bzr-2.1.1-2.el6.x86_64 2/2
Installed:
bzr.x86_64 0:2.1.1-2.el6
Dependency Installed:
python-paramiko.noarch 0:1.7.5-2.1.el6
Complete!

  

[root ~]$ bzr branch lp:sysbench
You have not informed bzr of your Launchpad ID, and you must do this to
write to Launchpad or access private data. See "bzr help launchpad-login".
Branched revision(s).
[root ~]$ ll -d /root/sysbench/
drwxr-xr-x root root 11月 : /root/sysbench/

2.安装sysbench

[root@localhost ~]#cd /root/sysbench
[root@localhost sysbench]#./autogen.sh
[root@localhost sysbench]#./configure \
--with-mysql-includes=/usr/local/mysql/include \
--with-mysql-libs=/usr/local/mysql/lib
[root@localhost sysbench]#make

注意如果报错libmysqlclient.so.18说明的需要链接mysql的lib库:例如:ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

三、OLTP测试前准备

初始化测试库环境(总共10个测试表,每个表 100000 条记录,填充随机生成的数据):

[root@localhost sysbench]# mysqladmin -u root -p'' create sbtest
[root@localhost sysbench]#./sysbench --mysql-host=localhost --mysql-port= --mysql-user=root --mysql-password='' --test=tests/db/oltp.lua --oltp_tables-count= --oltp-table-size= --rand-init=on prepare
[root@localhost sysbench]#./sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password='123456' --test=tests/db/oltp.lua --oltp_tables-count=10 --oltp-table-size=1000000  --oltp-read-only=off --report-interval=10 --rand-type=uniform --max-time=3600 --max-requests=0 --percentile=99 run

sysbench 0.5: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 8
Report intermediate results every 10 second(s)
Random number generator seed is 0 and will be ignored

Threads started!
-- 每10秒钟报告一次测试结果,tps、每秒读、每秒写、99%以上的响应时长统计
[ 10s] threads: 8, tps: 119.03, reads/s: 1677.65, writes/s: 478.93, response time: 294.40ms (99%)
[ 20s] threads: 8, tps: 76.80, reads/s: 1074.47, writes/s: 307.19, response time: 495.75ms (99%)
[ 30s] threads: 8, tps: 88.20, reads/s: 1232.94, writes/s: 351.61, response time: 503.98ms (99%)
[ 40s] threads: 8, tps: 149.79, reads/s: 2099.73, writes/s: 600.78, response time: 396.18ms (99%)
[ 50s] threads: 8, tps: 78.09, reads/s: 1093.32, writes/s: 312.38, response time: 758.12ms (99%)
[ 60s] threads: 8, tps: 79.30, reads/s: 1109.76, writes/s: 316.82, response time: 509.75ms (99%)
[ 70s] threads: 8, tps: 35.50, reads/s: 497.52, writes/s: 142.41, response time: 956.36ms (99%)
[ 80s] threads: 8, tps: 45.40, reads/s: 635.57, writes/s: 180.39, response time: 895.67ms (99%)
[ 90s] threads: 8, tps: 73.00, reads/s: 1019.58, writes/s: 290.49, response time: 693.84ms (99%)
[ 100s] threads: 8, tps: 148.01, reads/s: 2069.14, writes/s: 591.64, response time: 472.85ms (99%)
[ 110s] threads: 8, tps: 60.60, reads/s: 850.90, writes/s: 242.90, response time: 1052.81ms (99%)
[ 120s] threads: 8, tps: 88.20, reads/s: 1237.71, writes/s: 354.20, response time: 592.94ms (99%)
OLTP test statistics:
queries performed:
read: 145936 -- 读总数
write: 41696 -- 写总数
other: 20848 -- 其他操作总数(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等)
total: 208480 -- 全部总数
transactions: 10424 (86.74 per sec.) -- 总事务数(每秒事务数)
deadlocks: 0 (0.00 per sec.) -- 发生死锁总数
read/write requests: 187632 (1561.37 per sec.) -- 读写总数(每秒读写次数)
other operations: 20848 (173.49 per sec.) -- 其他操作总数(每秒其他操作次数)

General statistics: -- 一些统计结果
total time: 120.1714s -- 总耗时
total number of events: 10424 -- 共发生多少事务数
total time taken by event execution: 960.6432s -- 所有事务耗时相加(不考虑并行因素)
response time:
min: 5.35ms -- 最小耗时
avg: 92.16ms -- 平均耗时
max: 3955.05ms -- 最长耗时
approx. 99 percentile: 649.23ms -- 超过99%平均耗时

Threads fairness:
events (avg/stddev): 1303.0000/24.81
execution time (avg/stddev): 120.0804/0.00

测试建议:
1、真实测试场景中,数据表建议不低于10个,单表数据量不低于500万行,当然了,要视服务器硬件配置而定。如果是配备了SSD或者PCIE SSD这种高IOPS设备的话,则建议单表数据量最少不低于1亿行

2、真实测试场景中,建议持续压测时长不小于30分钟,否则测试数据可能不具参考意义。

参数解释:

--num-threads=      表示发起 8个并发连接
--oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试
--report-interval= 表示每10秒输出一次测试进度报告
--rand-type=uniform 表示随机类型为固定模式,其他几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)
--max-time= 表示最大执行时长为 120秒
--max-requests= 表示总请求数为 ,因为上面已经定义了总执行时长,所以总请求数可以设定为 ;也可以只设定总请求数,不设定最大执行时长
--percentile= 表示设定采样比例,默认是 %,即丢弃1%的长请求,在剩余的99%里取最大值

sysbench工具安装使用的更多相关文章

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

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

  2. MySQL性能测试工具sysbench的安装和使用

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

  3. Linux 性能测试工具 sysbench 的安装与简单使用

    文章目录 Linux 性能测试工具 sysbench 的安装与简单使用        一 背景        二 实验环境            2.1 操作系统            2.2 其他配 ...

  4. CentOS6.6系统源代码安装mysql5.5.28教程(附源码包下载地址)+sysbench的安装

    mysql从5.5版本开始,不再使用./configure编译,而是使用cmake编译器,具体的cmake编译参数可以参考mysql官网文档(※ 非常重要) http://dev.mysql.com/ ...

  5. sysbench的安装和做性能测试

    sysbench的安装和做性能测试 http://imysql.cn/node/312 sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况. ...

  6. Linux性能测试工具安装全集

    stress 下载地址:http://people.seas.harvard.edu/~apw/stress/ 一.stress工具安装:1.获取stress源码安装包(stress-1.0.4.ta ...

  7. sysbench的安装详解

    sysbench是一个压力测试工具.可以用它来测试cpu.mem.disk.thread.mysql.postgr.oracle:然而作为一个mysql dba 我当然是用它来压测mysql啦! 一. ...

  8. 通过sysbench工具实现MySQL数据库的性能测试

    1.背景 sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试.sysbench 支持的测试有CPU运算性能测试.内存分配及传输速度测试.磁盘IO性能测试.POS ...

  9. 【转帖】sysbench的安装和做性能测试

    iMySQL | 老叶茶馆 sysbench的安装和做性能测试 http://imysql.cn/node/312 我仿照这个学的 但是 需要用更新的版本才可以.   By yejr on 14 六月 ...

随机推荐

  1. STM32F103单片机解密资料

    STM32F103单片机解密资料下载 一.STM32 32位ARM Cortex MCU 基于ARM® Cortex® M 处理器内核的 32位闪存微控制器STM32产品家族,为MCU用户开辟了一个全 ...

  2. Back up and restore information in Firefox profiles

    Click the menu button , click Help and select Troubleshooting Information. The Troubleshooting Infor ...

  3. 新增职责 不能从IE进入的问题 此责任无可用函数 (转)

    此责任无可用函数(The Function Is Not Available Under The Responsibility) When attempting to navigate to a fu ...

  4. Java-线程间通信小结

    1)方法wait的作用是使当前执行代码的线程进行等待,将当前线程置入预执行队列,并且在wait所在代码行处停止执行,直到接到通知或者中断.在wait之前,要获得一个对象锁,即wait只能在同步方法/块 ...

  5. 【Access】数据库四门功课--[增删改查]基础篇

    一.增 以userinfo为例 1.增加一条完整的数据 INSERT INTO userinfo VALUES (1, 2, 3, 4); 基本格式:INSERT INTO AAA VALUES (X ...

  6. js惰性函数

    假设我们需要写一个函数,返回首次调用该方法的时间,注意是首次. 1.普通函数,首先定义一个全局变量 t var t; function(){ if(t) return t; t = new Date( ...

  7. MySQL_ALTER命令

    当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 1)修改表名:表名可以在数据库中唯一标识一个table 命令格式:ALTER TABLE 旧名 RENAME 新名 ...

  8. 猴子吃桃问题(Java递归实现)

    猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只剩下 ...

  9. world转.md

    下载并安装 Writage,下载地址:http://www.writage.com/

  10. harbor pull 失败

    STep1: 显示下面的错误 Error response from daemon: unknown: The image is not signed in Notary Step2: 这儿暂时不要选 ...