压测工具swingbench和sysbench对比

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:   今天来说说两款压测工具sysbench,swingbench,早些时候傻傻分不清楚,其实两个差别大了去了。   swingbench  先来说说swingbench,这款工具是Oracle英国的一个员工用Java开发的,没想到一下子成了压测Oracle的不二之选。

  今天来说说两款压测工具sysbench,swingbench,早些时候傻傻分不清楚,其实两个差别大了去了。  

swingbench

 先来说说swingbench,这款工具是Oracle英国的一个员工用Java开发的,没想到一下子成了压测Oracle的不二之选。当然Oracle还有不少这样的工具,比如DUL(Data UnLoader),是新西兰的一个员工用c开发,一个可以直接读取数据文件的工具,基本是ACS部门在提供高级服务所用。还有一款是SQLT也叫作SQLTXPLAIN,是Oracle Server Technologies Center of Expertise - ST CoE 提供的一款工具,可以通过MOS ID(ID 215187.1)下载,当然这样的工具还不少。

   回到我们的话题,swingbench因为基于Java的原因,所以跨平台的支持还是很不错的。基本上我们是在Windows平台上测试服务端的数据库性能,用到了Java,那么使用JDBC是很自然的一件事情。

876f0333-9575-40e8-a02c-880a7057174c.png

swingbench的设计风格是完全的组件化,每个组件可以单独抽出来使用,所以你如果到支持的站点去查看。宣传的组件图还是很霸气的。比如swingbench的主界面,数据生成器,追踪分析。

d256280d-1b07-45e9-81ee-2d4a03c51b19.png

还有更炫的。监控数据库的多项指标,DB time等。这效果和商用的spotlight监控有一拼。

8fd970c2-be23-4f6c-8ad0-ccc38eb6f083.png

   毫无疑问,swingbench是个好东西,一个工具箱继续发扬光大,得靠大家的使用和推广普及。有句话说得好,世上只有两种工具,一种是被人骂的,另一种是没人用的,被骂的越多,侧面反映出关注度越高,使用率越高,越用越成熟,这个MySQL就是一个很不错的例子。

   swingbench支持的功能如此丰富,可以指定多个数据仓库,可以生成指定大小的数据,测试是基于订单业务,模拟的场景更加丰富,它有什么缺点吗?有的。

    首先个人感觉最大的一点是它只支持Oracle,其实基于JDBC就是一个轻量级的接口,可以连接多种数据库。数据库工具松鼠就是这样,一个JDBC可以适配很多的数据库。如果在这一点上有所突破,我觉得还是有很大的潜力的。

    还有基于这个工具的特性,支持Oracle平台,似乎离开源社区还有一定的距离,尽管这个工具确实是开源的,我查了下github上暂时还没有看到,目前的支持是通过站点来维护的,目前最新的版本是2.6,已经支持12c.  

sysbench

   这款工具和swingbench有一个共同点,那就是它也是Oracle的一个员工开发的,不过属于MySQL team,后来到了Percona.

一个公司竟然能够产出两种风格的软件,和本身支持的数据库是有明显的关系的,这句话可能比较绕。我逐渐展开来说,先说说我最近安装,使用sysbench的一些感受。

   如果使用sysbench比较早一些的版本,应该就是0.4.12了。这个版本最早也是有一个单独的站点来维护的,目前已经全面转移到github上了。

   这个工具基于c开发,目前支持的数据库种类很丰富。

# find . -name "drv*.c"
./drizzle/drv_drizzle.c
./pgsql/drv_pgsql.c
./mysql/drv_mysql.c
./oracle/drv_oracle.c
./attachsql/drv_attachsql.c其中MySQL,这是原生支持,默认就有的。还支持PostgreSQL和Oracle,还有一个MySQL的分支drizzle也是支持的。

    0.4.12的版本很多年前就在用,优点很多,可以压测内存,CPU,IO,mutext等都可以测试,支持的数据库压测是其中的一个部分。这部分功能基于c的优势就很明显了。

     但是0.4.12这个版本限制还是比较多,比如只能基于一个数据库的一个一个表来压测,这一点来说限制就很大了。所以能够测试的场景还是很有限的。

     到了0.5的版本,这个情况改观了,可以一个库里多表了,而且可以设置interval参数来查看一个实时的变化了。因为它支持Oracle,所以我就很有兴趣的测试了一下,结果让我有点受挫。

为什么呢,0.5的版本中安装Oracle,主要就是一个动态链接库的配置要到位,但是配置好之后要开启测试的时候,发现数据库的驱动选择了oracle,但是测试却提示unknown database,带着疑问细看,原来测试的模板里竟然没有Oracle.这个怎么办自己动手丰衣足食,不过要写还确实有难度,为什么呢,因为模板是基于脚本语言Lua的,这又多了一道坎。

    不过行业里也有不少朋友写了一些Lua的模板可以参考。

这里我诉诉苦,那就是sysbench最新版本是1.0.3,我想新版本支持Oracle应该已经做得很好了,看官方的提示,对于Oracle安装还单独提供了一个README-Oracle.md,但是里面的安装提示还是和我预期的有一些差别。

   首先是安装的客户端,目前提供的是12c的精简版,这个没有问题,但是基于的操作系统是ubuntu 14,对于Oracle企业版来说是没有官方认证的,Linux版本Oracle官方可查到的,支持的系统基本是下面的这几个,版本会有一些变化。

Red Hat Enterprise Linux AS/ES
Oracle Enterprise Linux  ( OEL)
SUSE Linux Enterprise Server
AsianuxUbuntu也是Linux,但是后面的安装就让我有了不少的难度,需要安装Cuda,而且是使用dpkg,这部分很陌生,查了下原来dpkg 是Debian package的简写,为"Debian" 操作系统专门开发的套件管理系统,用于软件的安装,更新和移除。
   安装一套Cuda环境,我查了下,要花的功夫还真不少,最后辗转尝试,算是放弃了。

  于是回到0.5的版本来,配置了动态链接库,很快就配置好了,但是没有Lua模板,这个时候可以参考osdba提供的一套定制版,可以支持MySQL,Oracle,PostgreSQL,我试了下,还不错。

  整个过程如果使用git分分钟即可搞定。

抓取sysbench的安装部分

# git clone  https://github.com/osdba/sysbench_bin.git然后抓取Lua脚本部分

# git clone https://github.com/osdba/sysbench_lua  然后创建一个sysbench目录,把抓取到的两个目录整合起来。

# mkdir sysbench
# cd sysbench
# cp ../sysbench_bin/bin/* .
# cp -r ../sysbench_lua/lua . 这样一来目录下就有了3个执行文件,和直接使用sysbench的命令方式基本一样,只是有所侧重。

-rwxr-xr-x 1 root root 3307216 Mar 24 16:09 sysbench_mysql
-rwxr-xr-x 1 root root 3324397 Mar 24 16:09 sysbench_ora
-rwxr-xr-x 1 root root 3253979 Mar 24 16:09 sysbench_pg

小结

这两个压测工具还是有很鲜明的特点,也有自己固有的缺点,但是瑕不掩瑜,它们都有自己擅长的领域和亮点特性。所以测试还是得看场景,基准测试真是一块硬骨头。



  

   

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
JSON 应用服务中间件 测试技术
性能测试|JMeter压测结果分析
性能测试|JMeter压测结果分析
381 0
性能测试|JMeter压测结果分析
|
测试技术 OLTP
sysbench的压测工具的安装与使用
sysbench的压测工具的安装与使用
152 0
|
关系型数据库 MySQL 测试技术
|
存储 关系型数据库 测试技术
|
关系型数据库 测试技术 OLTP
PosgreSQL快速参数调优和sysbench压测
关于PostgreSQL的性能调优可以参考《PostgreSQL 9.0 High Performance》,以及朱贤文在2014 PostgreSQL中国用户大会上分享的《高性能Postgres 最佳实践》。
1575 0
|
关系型数据库 MySQL 测试技术
|
测试技术 应用服务中间件 PHP
关于jmeter压测性能的一些测试和思考
最近一个项目着急上线,要求大并发,目标是支持一万并发,于是用压力测试软件jmeter测试了一番,结果总是让人不可思议,全是jmeter连接目标服务器超时请求,特此记录一下。如果哪位知道原因请留言告知,谢谢! 测试文件均采用phpinfo测试页面,页面大小大概70-80k。
2374 0
|
关系型数据库 MySQL 测试技术