公司最近大量的MYSQL要上线,不做压力测试时说不过去的,所以拿出一直使用的sysbench 来压测一下MYSQL ,问题就开始了,最早用的是0.5 version.
各种命令是比较熟悉的,目前最新版本的sysbench 是1.10
熟悉 sysbench的 0.5 版本的同学,可能还记得命令集合 ,prepare , warmup , run , cleanup, 并且可以调整 测试的表的数量,表中插入的数据量等等。还是比较好用的,最后能给你一个 关于你测试的MYSQL的整体的一个 QPS TPS 的指标等等,并且在压测的时候,你还能观察一下系统整体的压力之类,至少一个生产服务器上线你要知道你服务器的承受能力之类的。
可能习惯其他数据库服务器的同学,一般不进行压测,直接上线,下图就是在压测时,MYSQL 报错信息,而此时,innodb_buffer 还有很多内存未使用。在得到报错时间点的 CPU , 内存, I/O 等数据, 你就可以在系统监控中得到这个系统的警报点,与预设值,当监控系统达到这样一个值,你就应该做点什么了,不过大部分很少做压测
问题是这个1.10版本的 sysbench 和 0.5 相比,无论是可以操控的参数和能得出的结果指标,都和以前大相径庭,从baidu google上搜相关的信息也都是停留在老版本的操作方法,新的版本基本上我是没有找到,详细的说明,而github上的信息,也是非常的 “吝啬”。是在是无法找回当然压测的酣畅淋漓。
是在没辙就只能自己研究了,所以才有了这篇文字。
从sysbench 的源代码里面,我是没有找到在哪里能配置 table 和 table size的信息,以及之前的一些配置信息。
在用新的sysbench 测试的时候,发现一些问题,就是即使我给出 thread ,event 等数值,也基本上改变不了我测试的中间的结果。只不过线程增加了。
最后,通过每条命令中的所带有的 lua 脚本,我找到了如何能像之前来控制产生表的数据量。
在安装sysbench后,(编译安装),你应该能在系统目录中获得 lua的一系列的脚本。你随意打开一个 lua 的脚本, 你可以很清晰的看到都有需要oltp_common ,另外在众多的脚本中,我也没有找到与表大小和多少表有关的信息。
顺藤摸瓜,找到oltp_common.lua ,
相关项设置的东西原来在这里,修改了lua中的表的SIZE 和 表的数量,同时还有一些其他的设置,例如一次合并多少个 transaction 等等
希望这篇文字能帮助到,使用sysbench 新版,找不到在系统命令中再也不见的参数而苦恼的同学。