暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
mysql压测方法.txt
173
10页
12次
2024-10-17
5墨值下载
--------------------------------------------------------------------------------
----------------------------------------------------------------
Description :mysql 压力测试方法
Author :如人饮水冷暖自知
Remark :
https://my.oschina.net/moooofly/blog/152547
http://www.techug.com/post/mysql-mysqlslap.html
http://jixiuf.github.io/blog/mysql%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95/
http://blog.chinaunix.net/uid-25723371-id-3498970.html
http://nsimple.top/archives/mysql-sysbench-tool.html
https://dearhwj.gitbooks.io/itbook/content/test/performance_test_qps_tps.html
https://www.hi-linux.com/posts/38534.html
--------------------------------------------------------------------------------
----------------------------------------------------------------
1.mysqlslap 工具
工具的官网说明:https://dev.mysql.com/doc/refman/5.5/en/mysqlslap.html
可能会遇到的报错:
报:mysqlslap: Error when connecting to server: Can't connect to local MySQL
server through socket '/tmp/mysql.sock' (2)
可以这样解决:ln -s /usr/program/mysql/data/mysql.sock /tmp/mysql.sock,主要是我的
sock 文件位置是自己的配置的,跟 mysqlslap 默认去读的地方不一样。
进行基准测试:
先做软链接:ln -s /usr/program/mysql/bin/mysqlslap /usr/bin
自动生成简单测试数据并测试:mysqlslap --defaults-file=/etc/my.cnf -a --auto-
generate-sql-load-type=mixed --auto-generate-sql-add-autoincrement
--engine=innodb
--concurrency=50,100 --number-of-queries=1000 --iterations=2 --debug-info -uroot
-p123456
注意:该语句表示测试并发为 50 100 的情况,进行 1000 次访问(该值一般这样预估出来:并发客户数×
客户查询次数)。这样的测试方法迭代 2 次,最终显示最大、最小、平均值
其中:-a,表示自动生成要测试的数据,等同于:--auto-generate-sql
其中:--debug-info,代表要额外输出 CPU 以及内存的相关信息。
自动生成复杂测试数据并测试:mysqlslap --defaults-file=/etc/my.cnf
--concurrency=50,100,200 --iterations=2 --number-int-cols=7 --number-char-
cols=13
--auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-
load-type=mixed --engine=innodb --number-of-queries=1000
--debug-info -S /tmp/mysql.sock -uroot -p123456
-number-int-cols=7 表示生成的表中必须有 7 int 类型的列
-number-char-cols=13 表示生成的表中必须有 13 char 类型的列
实际场景请求数较大的时候测试:mysqlslap --defaults-file=/etc/my.cnf
--concurrency=50,100,200,500,1000 --iterations=10 --number-int-cols=7
--number-char-cols=13 --auto-generate-sql --auto-generate-sql-add-autoincrement
--auto-generate-sql-load-type=mixed --engine=innodb --number-of-queries=10000
--debug-info -S /tmp/mysql.sock -uroot -p123456
测试结果含义解释:
Average number of XXXXXXXX:运行所有语句的平均秒数
Minimum number of XXXXXXXX:运行所有语句的最小秒数
Maximum number of XXXXXXXX:运行所有语句的最大秒数
Number of clients XXXXXXXX:客户端数量
Average number of queries per client XXXXXXXX:每个客户端运行查询的平均数。其中这个数和
上面的数相乘就等于 number-of-queries
对自己的数据库进行测试:
数据库:youmeek_nav
简单测试语句:mysqlslap --defaults-file=/etc/my.cnf --create-schema=youmeek_nav
--query="SELECT * FROM nav_url;" --debug-info -uroot -p123456
复杂测试语句:假设我把有 3 sql 要测试,我把这三条写入到一个 test.sql 文件中,3 sql 用分号隔
开,文件内容为:SELECT * FROM sys_user;SELECT * FROM nav_column;SELECT * FROM
nav_url;
那测试语句可以这样写:mysqlslap --defaults-file=/etc/my.cnf --create-
schema=youmeek_nav --query="/opt/test.sql" --delimiter=";" --debug-info -uroot
-p123456
--delimiter=”;” 表示文件中不同 sql 的分隔符是什么
其他一些参数:
mysqlslap --help 查看所有参数
--auto-generate-sql-load-type=XXXXXX 代表要测试的是读还是写还是两者混合,该值分别有:
read,write,update,mixed,默认是 mixed
--auto-generate-sql-add-autoincrement 代表对生成的表自动添加 auto_increment
--debug-info 代表要额外输出 CPU 以及内存的相关信息。
--only-print 打印压力测试的时候 mysqlslap 到底做了什么事,
--------------------------------------------------------------------------------
----------------------------------------------------------------
sysbench 工具
工具的官网说明:https://launchpad.net/sysbench
开源地址:https://github.com/akopytov/sysbench
安装
当前(201703)最新版本为:1.0.3,下面的操作也都是基于此版本,网络上的资料很多都是 0.4 0.5
不支持本文的语法。
安装编译相关工具包:yum -y install automake libtool
下载:https://github.com/akopytov/sysbench/releases
假设我这边下载下来的文件名为:sysbench-1.0.3.zip
我的 MySQL 安装路径为:/usr/program/mysql
include 目录位置:/usr/program/mysql/include
libs 目录位置:/usr/program/mysql/lib
设置 MySQL 包路径变量:export LD_LIBRARY_PATH=/usr/program/mysql/lib/
解压压缩包:unzip sysbench-1.0.3.zip
开始编译安装:
cd sysbench-1.0.3
./autogen.sh
./configure --with-mysql-includes=/usr/program/mysql/include --with-mysql-
libs=/usr/program/mysql/lib/
make
make install
测试是否安装成功:sysbench --version
安装完之后在这个目录下有一些 lua 测试脚本:cd /usr/local/share/sysbench,等下测试的时候需
要指定这些脚本位置,用这些脚本测试的。
默认这些脚本生成的数据都是 10000 个,如果你想要更多,需要修改:vim
/usr/local/share/sysbench/oltp_common.lua 文件。常修改的参数:
tables,生成多少张表
table_size,每张表多少记录数
开始测试
做不同的类型测试之前,最好都重启下 MySQL
创建一个数据库,名字为:sbtest
select 测试:
准备测试数据:sysbench /usr/local/share/sysbench/oltp_point_select.lua
--threads=15 --report-interval=10 --time=120 --mysql-user=root --mysql-
password=123456
--mysql-host=127.0.0.1 --mysql-port=3306 prepare
开始测试:sysbench /usr/local/share/sysbench/oltp_point_select.lua --threads=15
--report-interval=10 --time=120 --mysql-user=root --mysql-password=123456
--mysql-host=127.0.0.1 --mysql-port=3306 run
测试数据:sysbench /usr/local/share/sysbench/oltp_point_select.lua
--threads=15 --report-interval=10 --time=120 --mysql-user=root --mysql-
password=123456
--mysql-host=127.0.0.1 --mysql-port=3306 cleanup
读写测试:
读写测试我开了线程比较多,也修改了 oltp_common.lua 内容,有可能会报:MySQL error: 1461
"Can't create more than max_prepared_stmt_count statements
那你需要在 MySQL 行这句时设置 SQLSET GLOBAL max_prepared_stmt_count=100000;
准备测试数据:sysbench /usr/local/share/sysbench/oltp_read_write.lua --threads=100
--report-interval=10 --time=100 --mysql-user=root
--mysql-password=123456 --mysql-host=127.0.0.1 --mysql-port=3306 prepare
开始测试:sysbench /usr/local/share/sysbench/oltp_read_write.lua --threads=100
--report-interval=10 --time=100 --mysql-user=root
--mysql-password=123456 --mysql-host=127.0.0.1 --mysql-port=3306 run
测试数据:sysbench /usr/local/share/sysbench/oltp_read_write.lua --threads=100
--report-interval=10 --time=100 --mysql-user=root
--mysql-password=123456 --mysql-host=127.0.0.1 --mysql-port=3306 cleanup
参数说明:
--threads=15 表示发 15 个并发
--report-interval=10 表示控制台10 秒输出一次测试进
--time=120 的测试时120
--max-requests=0 表示请求数为 0为上面已经定义了总执行时,所以请求数可以设定为 0
可以设定请求数,不设定行时
--percentile=99 表示设定比例即丢弃 1%请求,在剩余 99%里取最大值。默认是 95%
测试报
Running the test with following options: Number of threads: 15 Report
intermediate results every 10 second(s) Initializing random
number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 15 tps: 337.43 qps: 6773.72 (r/w/o: 4745.03/1351.92/676.76) lat
(ms,95%): 73.13 err/s: 0.40 reconn/s: 0.00
[ 20s ] thds: 15 tps: 340.12 qps: 6813.82 (r/w/o: 4772.12/1361.06/680.63) lat
(ms,95%): 71.83 err/s: 0.40 reconn/s: 0.00
[ 30s ] thds: 15 tps: 344.78 qps: 6897.36 (r/w/o: 4828.36/1379.23/689.77) lat
(ms,95%): 71.83 err/s: 0.20 reconn/s: 0.00
[ 40s ] thds: 15 tps: 343.32 qps: 6876.75 (r/w/o: 4815.15/1374.47/687.14) lat
(ms,95%): 71.83 err/s: 0.60 reconn/s: 0.00
[ 50s ] thds: 15 tps: 342.80 qps: 6864.76 (r/w/o: 4806.67/1371.89/686.20) lat
(ms,95%): 73.13 err/s: 0.50 reconn/s: 0.00
[ 60s ] thds: 15 tps: 347.90 qps: 6960.74 (r/w/o: 4873.93/1390.71/696.10) lat
(ms,95%): 70.55 err/s: 0.30 reconn/s: 0.00
[ 70s ] thds: 15 tps: 346.70 qps: 6942.39 (r/w/o: 4859.29/1389.30/693.80) lat
of 10
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论