我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mysql 性能测试工具 sysbench的安装和使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mysql 性能测试工具 sysbench的安装和使用

     工作上需要用到AWS和Azure的Mysql服务,需要测试比较一下两个云服务的性能。于是开始百度 + google,查找性能测试工具。最终决定用sysbench。

sysbench介绍

              sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。

数据库目前支持MySQL/Oracle/PostgreSQL。本文只是简单演示一下几种测试的用法,后续准备利用sysbench来对MySQL进行一系列的测试。具体的一些参数设置,需要根据不同的测试要求来进行调整。

安装

1. 下载安装包,地址 https://github.com/akopytov/sysbench

#wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
#unzip sysbench-1.0.zip
#cd sysbench-1.0

2. 安装依赖库

#yum install automake libtool -y

3. 开始安装

#./autogen.sh
#./configure
#ERROR: cannot find MySQL libraries. If you want to compile with MySQL support 没找到mysql库 需要用参数指定下 --with-mysql-includes和--with-mysql-libs
#./configure --with-mysql-includes=/alidata/server/mysql5.7/include/ --with-mysql-libs=/alidata/server/mysql5.7/lib/

4. 由于是yum安装的mysql,我也不知道路径在哪里。如何查找mysql的安装路径?

安装mysql-devel,才能使用mysql_config

#yum install -y mysql-devel
#mysql_config -help
Usage: /usr/bin/mysql_config-64 [OPTIONS]
Options:
--cflags         [-I/usr/include/mysql -g  -fstack-protector  -m64 -fPIC  -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing]
--cxxflags       [-I/usr/include/mysql -g  -fexceptions -fstack-protector  -m64 -fPIC  -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing]
--include        [-I/usr/include/mysql]
--libs           [-L/usr/lib64/mysql -lmysqlclient -lpthread -lm -lrt -ldl]
--libs_r         [-L/usr/lib64/mysql -lmysqlclient -lpthread -lm -lrt -ldl]
--plugindir      [/usr/lib64/mysql/plugin]
--socket         [/var/lib/mysql/mysql.sock]
--port           [0]
--version        [5.6.39]
--libmysqld-libs [-L/usr/lib64/mysql -lmysqld -lpthread -lm -lrt -lcrypt -ldl -laio -lnuma]
--variable=VAR   VAR is one of:
pkgincludedir [/usr/include/mysql]
pkglibdir     [/usr/lib64/mysql]
plugindir     [/usr/lib64/mysql/plugin]

5. 再次执行config,成功

# ./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib64/mysql
#make

6. 执行下命令:

#sysbench --help
#sysbench: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
#问题原因:sysbench无法找到mysql的库文件,可能是环境变量LD_LIBRARY_PATH没有设置,设置后即可解决该问题:
#export LD_LIBRARY_PATH=/alidata/server/mysql5.7/lib/lib
#sysbench --version
sysbench 1.0.12 (using bundled LuaJIT 2.1.0-beta2)

准备测试表和数据

1. 创建测试数据库:

mysql>create database dbtest;

2. 测试命令

#/home/mysql/sysbench-1.0/class="lazy" data-src/sysbench --test=/home/mysql/sysbench-1.0/tests/include/oltp_legacy/oltp.lua \
--mysql-host=mysql-host-ip --mysql-port=3306 --mysql-user=envision --mysql-password=password \
--mysql-db=dbtest --oltp-tables-count=10 --oltp-table-size=500000 \
--report-interval=10 --rand-init=on --max-requests=0 \
--oltp-read-only=off --max-time=120 --num-threads=30 \
[ prepare | run | cleanup ]

##三选一

prepare 准备;

run 运行;

cleanup  清理数据。

注意最后一行,一项测试开始前需要用prepare来准备好表和数据,run执行真正的压测,cleanup用来清除数据和表。


3. 执行sysbench命令参数解释:

#-test=/root/sysbench-1.0/tests/include/oltp_legacy/oltp.lua 表示调用 oltp.lua 脚本进行 oltp 模式测试
#--oltp_tables_count=10 表示会生成 10 个测试表
#--oltp-table-size=500000 表示每个测试表填充数据量为 500000 
#--rand-init=on 表示每个测试表都是用随机数据来填充的
#-num-threads=8 表示发起 8个并发连接
#--oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试#--report-interval=10 表示每10秒输出一次测试进度报告
#--rand-type=uniform 表示随机类型为固定模式,其他几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)
#--max-time=120 表示最大执行时长为 120秒#--max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长
#--percentile=99 表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值

4. 测试准备: 30个并发连接,10张表 每个表填充50W条数据 最大请求时间120s

#/home/mysql/sysbench-1.0/class="lazy" data-src/sysbench --test=/home/mysql/sysbench-1.0/tests/include/oltp_legacy/oltp.lua \
--mysql-host=mysql-host-ip --mysql-port=3306 --mysql-user=envision --mysql-password=password \
--mysql-db=dbtest --oltp-tables-count=10 --oltp-table-size=500000 \
--report-interval=10 --rand-init=on --max-requests=0 \
--oltp-read-only=off --max-time=120 --num-threads=30 \
prepare
Creating table 'sbtest1'...
Inserting 100000 records into 'sbtest1'
Creating secondary indexes on 'sbtest1'...
Creating table 'sbtest2'...
Inserting 100000 records into 'sbtest2'
Creating secondary indexes on 'sbtest2'...
......
Inserting 100000 records into 'sbtest9'
Creating secondary indexes on 'sbtest9'...
Creating table 'sbtest10'...
Inserting 100000 records into 'sbtest10'
Creating secondary indexes on 'sbtest10'...

5. 执行sysbench测试,并输出测试报告

#/home/mysql/sysbench-1.0/class="lazy" data-src/sysbench --test=/home/mysql/sysbench-1.0/tests/include/oltp_legacy/oltp.lua \
--mysql-host=mysql-host-ip --mysql-port=3306 --mysql-user=envision --mysql-password=password \
--mysql-db=dbtest --oltp-tables-count=10 --oltp-table-size=500000 \
--report-interval=10 --rand-init=on --max-requests=0 \
--oltp-read-only=off --max-time=120 --num-threads=128 \
run > /tmp/liang/mysql-report.txt

6. 查看测试报告

30个threads

sysbench 1.0.12 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 30
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 30 tps: 188.63 qps: 3795.16 (r/w/o: 2659.89/755.31/379.96) lat (ms,95%): 223.34 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 30 tps: 177.80 qps: 3563.97 (r/w/o: 2496.95/711.31/355.71) lat (ms,95%): 248.83 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 30 tps: 177.20 qps: 3542.62 (r/w/o: 2479.82/708.30/354.50) lat (ms,95%): 235.74 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 30 tps: 189.60 qps: 3797.38 (r/w/o: 2658.99/759.20/379.20) lat (ms,95%): 227.40 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 30 tps: 190.40 qps: 3798.09 (r/w/o: 2655.29/762.20/380.60) lat (ms,95%): 211.60 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 30 tps: 179.70 qps: 3598.40 (r/w/o: 2520.50/718.40/359.50) lat (ms,95%): 235.74 err/s: 0.00 reconn/s: 0.00
[ 70s ] thds: 30 tps: 187.30 qps: 3740.91 (r/w/o: 2617.61/748.50/374.80) lat (ms,95%): 227.40 err/s: 0.00 reconn/s: 0.00
[ 80s ] thds: 30 tps: 187.40 qps: 3755.29 (r/w/o: 2630.19/750.40/374.70) lat (ms,95%): 211.60 err/s: 0.00 reconn/s: 0.00
[ 90s ] thds: 30 tps: 188.10 qps: 3762.11 (r/w/o: 2632.80/753.10/376.20) lat (ms,95%): 211.60 err/s: 0.00 reconn/s: 0.00
[ 100s ] thds: 30 tps: 183.70 qps: 3676.35 (r/w/o: 2575.16/733.69/367.49) lat (ms,95%): 227.40 err/s: 0.00 reconn/s: 0.00
[ 110s ] thds: 30 tps: 190.80 qps: 3816.33 (r/w/o: 2671.42/763.41/381.50) lat (ms,95%): 211.60 err/s: 0.00 reconn/s: 0.00
[ 120s ] thds: 30 tps: 195.49 qps: 3907.36 (r/w/o: 2733.40/783.17/390.79) lat (ms,95%): 204.11 err/s: 0.00 reconn/s: 0.00
SQL statistics:
    queries performed:
        read:                            313488 --读总数
        write:                           89568  --写总数
        other:                           44784 --其他操作(CURD之外的操作,例如COMMIT)
        total:                           447840 --全部总数
    transactions:                        22392  (186.27 per sec.) --总事务数(每秒事务数)
    queries:                             447840 (3725.43 per sec.) --总数(每秒总数)
    ignored errors:                      0      (0.00 per sec.)  --总忽略错误总数(每秒忽略错误次数)
    reconnects:                          0      (0.00 per sec.) --重连总数(每秒重连次数)
General statistics:
    total time:                          120.2098s --总耗时
    total number of events:              22392 --共发生多少事务数
Latency (ms):
         min:                                  105.91 --最小耗时
         avg:                                  160.86 --平均耗时
         max:                                  850.77 --最长耗时
         95th percentile:                      223.34 --超过95%平均耗时
         sum:                              3601892.56
Threads fairness:
    events (avg/stddev):           746.4000/4.95 --总处理事件数/标准偏差
    execution time (avg/stddev):   120.0631/0.05--总执行时间/标准偏差


经过测试,AWS和Azure的mysql性能相差无几。sysbench的工具,使用起来也比较简单直观。适合对Mysql的简单性能测试。后续有时间,再研究一下sysbench对CPU,IO等性能测试的情况和使用感受。


参考文档:

http://blog.csdn.net/oahz4699092zhao/article/details/53332105

http://www.jb51.net/article/93924.htm

https://nsimple.top/archives/mysql-sysbench-tool.html


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mysql 性能测试工具 sysbench的安装和使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL性能压力基准测试工具sysbench的使用简介

1、sysbench介绍这里介绍一款MySQL数据库的压力测试软件sysbench,用它来进行基准测试。 sysbench 是一个开源的、模块化的、跨平台的多线程性能测试工具, 可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。
2022-05-28

磁盘性能测试工具-FIO的安装及使用

文章目录 FIO介绍FIO安装在线安装离线安装 磁盘测试命令行方式测试结果说明命令参数说明配置文件方式 dd命令介绍使用方法 FIO介绍 FIO是一款测试IOPS的工具,用于对磁盘进行压力测
2023-08-22

Mysql官方性能测试工具mysqlslap的使用简介

目录简介使用介绍实际体验小结简介MySQL 作为最流行的开源数据库,在各个领域都有相当广泛的应用,作为一个 MySQL DBA,经常会对数据库进行一些性能测试来主动(或者是被动的)对业务压力做一个评估,来判断数据库当前的负载以及最高的性能容
2022-05-26

Apache压力测试工具的安装使用

1.下载 进入apache官网 http://httpd.apache.org/ 下载apache即可 2.启动ab 以windows环境下,apache安装路径为C:\apache\Apache24\为例 打开cmd命令,输入命令到bin
2022-06-04

怎么用Docker安装Web前端性能测试工具YellowLabTools

本篇内容介绍了“怎么用Docker安装Web前端性能测试工具YellowLabTools”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Y
2023-06-19

Android性能测试工具APT使用指南

腾讯的安卓平台高效的性能测试工具APT(Android Performance Testing Tools),适用于开发自测和定位性能瓶颈,帮助测试人员完成性能基准测试、竞品测试。APT提供了CPU利用率实时曲线图、多维度内存实时曲线图,方
2022-06-06

C#中如何使用性能测试工具和性能优化技巧

C#中如何使用性能测试工具和性能优化技巧,需要具体代码示例性能优化在软件开发过程中起着非常重要的作用,它可以提高系统的性能、运行速度和响应能力。C#是一种高性能的编程语言,也有许多性能优化技巧和工具可以帮助我们更好地利用C#的优势。本文将介
2023-10-22

服务器性能测试工具怎么使用

服务器性能测试工具可以帮助测试服务器的性能表现,下面是使用步骤:1. 选择一款适合您的服务器的性能测试工具,例如Apache JMeter、LoadRunner、Gatling等。2. 根据工具的要求,安装并配置好工具。3. 准备测试数据,
2023-06-04

编程热搜

目录