我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

想把mysql的最大连接数设置修改成最大最优的?这个就是仁者见仁智者见智的事情了。每个服务器的硬件配置不同,网络环境不同,所能承载的最大连接数也是不同的。mysql官方提供了mysqlslap工具,可以辅助运维人员来确定适合自己服务器的最大连接数。

苏南大叔:如何利用mysqlslap测试mysql服务器支持的最大连接数? - mysqlslap最大连接数
如何利用mysqlslap测试mysql服务器支持的最大连接数?(图5-1)

苏南大叔的“程序如此灵动”技术博客,记录苏南大叔的编程经验文章。测试环境:win10mysql@5.7.26mysqlslap@5.7.26

slap,打脸... 给官方的命名的形象性点赞。

mysqlslap安装

不用刻意安装mysqlslap程序,它是随着mysql的安装而自动安装的。也就是理论上来说,有mysql的地方,就必然有mysqlslap程序。

当然也可以使用下面的命令,查看mysqlslap的实际位置:

where mysqlslap

苏南大叔:如何利用mysqlslap测试mysql服务器支持的最大连接数? - mysqlslap-location
如何利用mysqlslap测试mysql服务器支持的最大连接数?(图5-2)

不识别编码默认选项

mysqlslap不能识别默认的字符编码设置,会一直报错:

mysqlslap: [ERROR] unknown variable 'default-character-set=utf8'

解决方案是:
执行mysqlslap的时候,加个新的选项--no-defaults。当然,也可以修改my.cnf里面的配置,但是,苏南大叔认为这并不科学。

苏南大叔:如何利用mysqlslap测试mysql服务器支持的最大连接数? - mysqlslap-no-defaults
如何利用mysqlslap测试mysql服务器支持的最大连接数?(图5-3)

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

苏南大叔:如何利用mysqlslap测试mysql服务器支持的最大连接数? - 测试连接数
如何利用mysqlslap测试mysql服务器支持的最大连接数?(图5-4)

或者观察一下,把--concurrency设置为多少的时候,服务器会挂掉呢?

苏南大叔:如何利用mysqlslap测试mysql服务器支持的最大连接数? - 测试极限
如何利用mysqlslap测试mysql服务器支持的最大连接数?(图5-5)

最合适的连接数

在使用mysqlslap打脸的过程中,得到的最佳的max_connections连接数设置是多少呢?【及时】查看一下status可能会有所答案。

show status like '%Threads_connected%';

参考文章:

结束语

当然,mysqlslap还有更多的参数可供选择。苏南大叔这边就不做叙述了,如果以后有用得到的参数,再做新的文章总结。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   mysql