提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、MYSQL压测
常用的mysql压测工具有两个
1、Mysql自带的压力测试工具——Mysqlslap
2、第三方工具sysbench
进行压力测试
二、MySQL自带的压力测试工具——Mysqlslap
mysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。mysqlslap为mysql性能优化前后提供了直观的验证依据,系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户流量上限及其抗压性等问题。
(一)、更改其默认的最大连接数
再对mysql进行压力测试之前,需要更改其默认的最大连接数,
vim /etc/my.cnf
systemctl restart mysqld.service
进入mysql中查看最大连接数
进行压力测试
注意:mysqlslap好像会与default-character-set=utf8冲突
建议测试前先my.cnf文件中的default-character-set=utf8注释掉
mysqlslap --defaults-file=/etc/my.cnf --concurrency=100,200 --iterations=1 --number-int-cols=20 --number-char-cols=30 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=2000 -uroot -pabc123 --verbose
#模拟测试两次读写并发,第一次100,第二次200,自动生成SQL脚本,测试表包含20个init字段,30个char字段,每次执行2000查询请求。测试引擎分别是myisam,innodb。
–defaults-file=/etc/my.cnf 从/etc/my.cnf文件中读取默认选项
–concurrency=100,200 测试并发的线程数/客户端数,第一次100,第二次200
–iterations=1 指定测试重复次数1次
–number-int-cols=20 指定测试表中int列的数量
–number-char-cols=30 指定测试表中varchar列的数量
–auto-generate-sql 自动生成 SQL 语句
–auto-generate-sql-add-autoincrement 在自动生成的表中添加自增列
–auto-generate-sql-load-type=mixed 测试的负载模型,包括 mixed, update, write, key,read,默认是 mix
–engine=myisam,innodb 指定建表时的存储引擎
–number-of-queries=2000 指定每个线程执行的 SQL 语句数量上限(不精确)
–verbose 更详细的输出
Average number of seconds to run all queries #运行所有查询的平均秒数
Minimum number of seconds to run all queries #运行所有查询所需的最小秒数
Maximum number of seconds to run all queries #运行所有查询的最大秒数
Number of clients running queries #运行查询的客户端数量
Average number of queries per client #每个客户端的平均查询数
mysqlslap --defaults-file=/etc/my.cnf --concurrency=200,400 --iterations=1 --number-int-cols=50 --number-char-cols=60 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=80000 -uroot -pabc123 --verbose
压力调大测试,发现明显现在查询时间明显变慢了
压力大一点
(二)、使用第三方工具sysbench进行压力测试
1、简介
系统平台/自述文件在硕士 ·阿科皮托夫/系统台 ·吉特哈布 (github.com)
https://github.com/akopytov/sysbench/blob/master/README.md#general-command-line-options
sysbench]是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL。本文只是简单演示一下几种测试的用法,后续准备利用sysbench来对MySQL进行一系列的测试。具体的一些参数设置,需要根据不同的测试要求来进行调整。
CPU 运算性能测试
磁盘、IO、性能测试
调度程序性能测试
内存分配及传输速度测试
POSIX 线程性能测试
数据库性能测试(OLTP 基准测试,需要通过 /usr/share/sysbench/ 目录中的 Lua 脚本执行,例如 oltp_read_only.lua 脚本执行只读测试)
sysbench 还可以通过运行命令时指定自己的 Lua 脚本来自定义测试。
2、默认支持mysql
yum -y install epel-release #安装第三方epel源
yum -y install sysbench #安装sysbench工具
sysbench --version #确定工具已安装
sysbench 1.0.17
3、查看sysbench工具的帮助选项
-
testname 是内置测试的可选名称(例如 ,,等),或捆绑的 Lua 脚本之一的名称(例如),或自定义 Lua 脚本的路径。如果在命令行上没有指定测试名称(因此,也没有命令,因为在这种情况下,它将被解析为测试名称),或者测试名称是破折号(“”),则 sysbench 期望 Lua 脚本在其标准输入上执行。
-
command 是一个可选参数,它将通过系统平台传递到使用测试名称指定的内置测试或脚本。命令定义测试必须执行的操作。可用命令的列表取决于特定的测试。某些测试还实现自己的自定义命令。
以下是对典型测试命令及其用途的描述:
`prepare`:为那些需要它们的测试执行准备操作,例如,在磁盘上为测试创建必要的文件,或为数据库基准测试填充测试数据库。
`run`:运行使用测试名称参数指定的实际测试。此命令由所有测试提供。
`cleanup`:在创建临时数据的测试中,删除测试运行后的临时数据。
`help`:显示使用测试名参数指定的测试的用法信息。这包括测试提供的命令的完整列表,因此应使用它来获取可用命令。
- optiond是以 开头的零个或多个命令行选项的列表。与命令一样,该命令应用于描述特定测试提供的可用选项。
有关 sysbench 本身提供的常规选项的说明,请参阅常规命令行选项。
#可用于显示常规命令行语法和选项。sysbench --help
sysbench --help
Usage:
sysbench [options]... [testname]