如何利用mysqlslap测试mysql服务器支持的最大连接数?
发布于 作者:苏南大叔 来源:程序如此灵动~想把mysql
的最大连接数设置修改成最大最优的?这个就是仁者见仁智者见智的事情了。每个服务器的硬件配置不同,网络环境不同,所能承载的最大连接数也是不同的。mysql
官方提供了mysqlslap
工具,可以辅助运维人员来确定适合自己服务器的最大连接数。
苏南大叔的“程序如此灵动”技术博客,记录苏南大叔的编程经验文章。测试环境:win10
,mysql@5.7.26
,mysqlslap@5.7.26
。
slap
,打脸... 给官方的命名的形象性点赞。
mysqlslap安装
不用刻意安装mysqlslap
程序,它是随着mysql
的安装而自动安装的。也就是理论上来说,有mysql
的地方,就必然有mysqlslap
程序。
当然也可以使用下面的命令,查看mysqlslap
的实际位置:
where mysqlslap
不识别编码默认选项
mysqlslap
不能识别默认的字符编码设置,会一直报错:
mysqlslap: [ERROR] unknown variable 'default-character-set=utf8'
解决方案是:
执行mysqlslap
的时候,加个新的选项--no-defaults
。当然,也可以修改my.cnf
里面的配置,但是,苏南大叔认为这并不科学。
mysqlslap --no-defaults ...
推荐的配置
mysqlslap
的-u
/-p
等设置和mysql
一样,就是要被“打脸”的服务器的配置信息。
mysqlslap --no-defaults -hlocalhost -uroot -proot -P3306 ...
执行的语句
在服务器端要执行什么语句?其中几个是属于查询类的?说实话,苏南大叔并不是很清楚要执行什么语句比较合适。所以,选择设置,自动生成sql
语句选项--auto-generate-sql
。
mysqlslap --no-defaults -hlocalhost -uroot -proot -P3306 --auto-generate-sql ...
模拟多少客户端
模拟多少客户端,一共有两个设置,
- 一个是说设置多少个客户端
--concurrency
- 另外一个设置一共多少条查询(一个客户端可以执行很多条查询)
--number-of-queries
mysqlslap --no-defaults -hlocalhost -uroot -proot --auto-generate-sql --concurrency=3000 --number-of-queries=3000 -vv
执行效果
可以先通过修改`配置,设置一个比较大的连接数配置。然后执行
mysqlslap`看看效果。
如果客户端的数量设置的比较多的话,要等一段实际,mysqlslap
才能执行完毕。这个时候会有个统计的结果出现。不过,貌似没有啥特别的用途。
Average number of seconds to run all queries: 0.016 seconds
Minimum number of seconds to run all queries: 0.016 seconds
Maximum number of seconds to run all queries: 0.016 seconds
Number of clients running queries: 8
Average number of queries per client: 2
或者观察一下,把--concurrency
设置为多少的时候,服务器会挂掉呢?
最合适的连接数
在使用mysqlslap
打脸的过程中,得到的最佳的max_connections
连接数设置是多少呢?【及时】查看一下status
可能会有所答案。
show status like '%Threads_connected%';
参考文章:
结束语
当然,mysqlslap
还有更多的参数可供选择。苏南大叔这边就不做叙述了,如果以后有用得到的参数,再做新的文章总结。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。