mysql服务器基准测试_[总结] 简述 MySQL 基准测试工具

​一、什么是基准测试

定义:

基准测试是一种测量和评估软件性能指标的活动,用于建立某个时刻的性能基准,以便当系统发生软硬件变化时,重新进行基准测试以评估变化对性能的影响。

区别:

基准测试是针对系统设置的一种压力测试。(简化的压力测试:直接、简单、易于比较,用于评估服务器的处理能力。不关心业务逻辑,所使用的查询和业务的真实性可以和业务环境没关系)

压力测试是对真实的业务数据进行测试,获得真实系统所能承受的压力。(需要不同主题所使用的数据和查询也是真实用到的)

目的:

建立MySQL服务器的性能基准线 (确认当前MySQL服务器运行情况)

模拟比当前系统更高的负载,以找出系统的扩展瓶颈  (增加数据库并发,观察QPS,TPS变化,确定并发量与性能最优的关系)

测试不同的硬件、软件和操作系统配置   (软硬件对数据库性能的影响)

证明新的硬件设备是否配置正确

常见指标:

单位时间内所处理的事务数(TPS)

单位时间内所处理的查询数(QPS)

响应时间(us,ms,s等)

平均响应时间

最小响应时间

最大响应时间

各时间所占百分比(最有参考意义)

并发量 (同时处理的查询请求的数量)

注:并发量不等于连接数

注:需要关注的是正在工作中的并发的操作数或同时工作的数量

二、基准测试步骤

计划和设计基准测试

对整个系统还是某一组件

使用什么样的数据

反应系统实际情况则需要

生产环境数据与生产环境SQL

生产数据备份

测试时间段内产生的SQL日志多性能的回放

相对复杂

参数调整对性能的影响只需要

测试工具完成

计算测试时间和次数

准备基准测试及数据收集脚本(收集一下信息)

CPU使用率

IO

网络流量

状态与计数器信息等

脚本:Get_Test_Info.sh

运行基准测试

保存及分析基准测试结果

基准测试中容易忽略的问题:

在生产环境数据时只使用了部分数据

在多用户场景中,只做了单用户的测试(推荐使用多线程并发测试)

单服务器上测试分布式应用(推荐使用相同架构的测试)

反复执行同一查询(容易缓存命中,无法反应真实查询性能)

三、基准测试工具

系统测试:

Apache Bench

Httpload

MySQL测试:

mysqlslap

sysbench

下文重点讲述MySQL测试。

MySQLSLAP:

MySQL服务器自带的基准测试工具,随MySQL 一起安装

特点:

可以模拟服务器负载,并输出相关统计信息

可以指定也可以自动生成查询语句

缺点:

innodb建立无索引(不通用)

无法对服务器硬件测试(CPU 、I/O、 内存)\

参数:

--auto-generate-sql #由系统自动生成SQL脚本进行测试

--auto-generate-sql-add-autoincrement #在生成的表中增加自增ID

--auto-generate-sql-load-type #指定测试中使用的查询类型

--auto-generate-sql-write-number #指定初始化数据时生成的数据量

--concurrency #指定并发线程的数量,可用逗号分隔

--engine #指定要测试表的存储引擎,可以用逗号分割多个存储引擎

--no-drop #指定不清理测试数据

--iterations #指定测试运行次数(若设置,则no-drop无效)

--number-of-queries #指定每一个线程执行的查询数量

--debug-info #指定输出额外的内存及CPU统计信息

--number-int-cols #指定测试表中包含的INT类型列的数量

--number-char-cols #指定测试表中包含的varchar类型的数量

--create-schema #指定了用于执行测试的数据库的名字

--query #用于指定自定义SQL的脚本(存储)

--only-print #并不运行测试脚本,而是把生成的脚本打印出来

查看更多参数:mysqlslap --help

b6534dbb1ba5dae04894cd85c93065f5.png

b575414bf8ecea071e7a7dd1afb29f38.png

举例:

1、创建测试账号或直接使用原有账号密码:grant all privileges on *.* to [db_username]@'localhost' identified by [db_password];

2、命令:mysqlslap -hlocalhost -u[数据库账号] -p[数据库密码] -P3306 --concurrency=1,50,100,200 --iterations=3 --number-int-cols=5 --number-char-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement --engine=myisam,innodb --number-of-queries=10 --create-schema=stest

3、打印脚本:mysqlslap --concurrency=1,50,100,200 --iterations=3 --number-int-cols=5 --number-char-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement --engine=myisam,innodb --number-of-queries=10 --create-schema=sbtest --only-print > test.log

如图:

8781ecce2353c6b78fde016ecf83a9d4.png

SYSBENCH:

特点:

常用测试工具(适合innodb测试)

可以对服务器硬件测试(CPU 、I/O、 内存)

安装:

1、wget https://github.com/akopytov/sysbench/archive/0.5.zip

2、unzip sysbench-0.5.zip

3、cd sysbench

4、./autogen.sh

5、./configure --with-mysql-includes=/usr/local/mysql/include/ \--with-mysql-libs=/usr/local/mysql/lib/ (指定mysql下include目录和libs目录)

6、make && make install

7、sysbench --help //检查是否安装成功(如下图所示,则表示安装成功)

92e0bd300f423da4ae307d5c90a4b05e.png

常用参数:

-- test #用于指定索要执行的测试类型,支持以下参数:

Fileio #文件系统I/O性能测试

cpu #CPU性能测试

memory #内存性能测试

Oltp #测试要指定具体的lua脚本(lua脚本位于 sysbench-0.5/sysbench/tests/db)

--mysql-db #用于指定执行基准测试的数据库名

--mysql-table-engine #用于指定所使用的存储引擎

--oltp-tables-count #执行测试的表的数量

--oltp-table-size #指定每个表中的数据行数

--num-threads #指定测试的并发线程数量

--max-time #指定最大的测试时间

--max-requests #请求的最大数目,0表示不限制

--thread-stack-size #每个线程的堆栈大小 32K

--init-rng #在测试开始之前指定是否需要初始化随机数发生器 off

--report-interval #指定间隔多长时间输出一次统计信息

--test #指定测试项目名称 Required

--debug #是否显示更多的调试信息 off

--validate #在可能的情况下是否进行验证检查 off

--help #帮助信息 off

--verbosity #详细级别,0-严重信息,5-调试信息

--percentile #表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值

--mysql-user #指定执行测试的MySQL用户

--mysql-password #指定执行测试的MySQL用户的密码

prepare #用于准备测试数据

run #用于实际进行测试

cleanup #用于清理测试数据

举例:

A、测试CPU

sysbench --test=cpu --cpu-max-prime=10000 run

#CPU测试使用64位整数,测试计算质数直到某个最大值所需要的时间,

#cpu测试主要是进行素数的加法运算,在上面的例子中,

#指定了最大的素数为 20000,自己可以根据机器cpu的性能来适当调整数值,

#主要看total time所花费的时间

如图:

2e390b07bed00675d4ebfc9b7f53f9a9.png

B、测试线程

sysbench --test=threads --num-threads=800 --thread-yields=100 --thread-locks=10 run

#thread-locks小于线程数除以2,lock越少,处理时间越长

2f93190f28966cb8c5e5126e431369de.png

C、测试IO

1、查看内存:free -m

2、查看磁盘空间:df -lh 如图1所示

3、创建测试文件夹,准备测试数据:sysbench --test=fileio --file-total-size=1G prepare

4、查看fileio的参数:sysbench --test=fileio --help

5、sysbench --test=fileio --num-threads=8 --init-rng=on --file-total-size=1G --file-test-mode=rndrw --report-interval=1 run

#如图2所示

如图所示:

图1:

7d2aa86c5bd7f57445a383ec0850f50d.png

图2:

54436f94a4d486fa41975c006d27817b.png

D、测试OTLP

建立测试环境

1、建立测试数据库:create database base_test;

2、建立测试账户:grant all privileges on *.* to [db_username]@'localhost' identified by ['db_password'];

进入sysbench:cd /sysbench-0.5/sysbench/tests

准备命令:sysbench --test=./oltp.lua --mysql-table-engine=innodb --oltp-table-size=10000 --mysql-db=base_test --mysql-user=[db_username]--mysql-password=[db_password] --oltp-tables-count=10 --mysql-socket=/var/lib/mysql/mysql.sock prepare

执行监听脚本:bash ./Get_Test_info.sh &

查看脚本运行状态:ps -ef

测试命令:sysbench --test=./oltp.lua --mysql-table-engine=innodb --oltp-table-size=10000 --mysql-db=base_test --mysql-user=[db_username]--mysql-password=[db_password] --oltp-tables-count=10 --mysql-socket=/var/lib/mysql/mysql.sock run

be87cd2badad358b9ec99cf0433ea69a.png

查看测试效果:

1、在数据库中:show processlist

2、查看测试信息(Get_Test_info.sh里面指定文件夹) //打印 TS TS 1563176835.003951886 2019-07-15 15:47:15

3、收集完成后停止脚本收集命令:rm -rf running

4、分析收集信息:./analyze.sh /base_test/sysbench/benchmarks/5-sec-status-2019-07-15_03-status

注:

查看文件位置:

find / -name mysql | mysql.sock | oltp.lua

whereis mysql等方法

获取脚本:

Get_Test_info.sh中路径需要修改为系统实际路径

关注公众号,后台回复脚本,获取shell脚本(analyze.sh,Get_Test_info.sh)

本作品采用《CC 协议》,转载必须注明作者和本文链接

来杯可乐不加糖。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过网上收集和对LINUX服务器性能的分析和体验,整理了几个比较实用,功能比较强大的性能测试工具供亲们下载,虽然网络上都对每个工具做了详细的功能介绍和文档说明,但分得很散,所以, 在此本人将各个比较实用的服务器性能测试工具集中起来,方便开发人员有针对性的测试和对比,在服务器性能方面起到很好的效果。 1、LTP--linux稳定性测试: LTP套件是由 Linux Test Project 所开发的一套系统测试套件。它基于系统资源的利用率统计开发了一个测试的组合,为系统提供足够的压力。通过压力测试来判断系统的稳定性和可靠性。 2、Linux性能测试工具Lmbench:Linux性能测试工具Lmbench是一套简易可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具。一般来说,它衡量两个关键特征:反应时间和带宽。Lmbench旨在使系统开发者深入了解关键操作的基础成本。其官方网站是:http://www.bitmover.com/lmbench/。 3、Linux下很全面的监控工具dstat:dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示. 和sysstat相同的是, dstat也可以收集指定的性能资源, 譬如 dstat -c 即显示CPU的使用情况. 下载安装文件dstat-0.6.7-1.el*.rf.noarch.rpm: http://dag.wieers.com/rpm/packages/dstat/ 3、网络流量监测图形分析工具 Cacti:Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具 4、Linux系统维护常用工具sysstat:sysstat这个工具,可以说是linux &Unix; 以及Freebsd最常用的工具。它的主要用途就是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。 5、Apache ab 压力测试:ab的全称是ApacheBench,ab是Apache 附带的超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值