--------------------------------------------------------------------------------
----------------------------------------------------------------
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
评论