压测工具swingbench和sysbench对比(r12笔记第13天)

今天来说说两款压测工具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是很自然的一件事情。

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

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

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

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

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

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

sysbench

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

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

如果使用sysbench比较早一些的版本,应该就是0.4.12了。这个版本最早也是有一个单独的站点来维护的,launchpad.net,目前已经全面转移到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 Asianux

Ubuntu也是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

小结

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

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2017-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Python Web 框架大乱斗:哪个框架适合你?

今天,有非常多的Python框架,用来帮助你更轻松的创建web应用。这些框架把相应的模块组织起来,使得构建应用的时候可以更快捷,也不用去关注一些细节(例如so...

3606
来自专栏小白课代表

集中式播放,给你更好的听歌体验。

随着音乐正版化的推进,想要在单一的平台听到想听的所有歌曲越来越困难,正版化是好事,但对用户来说,却绝对算不上是方便。虾米音乐、QQ音乐、网易云音乐、豆瓣音乐等等...

942
来自专栏SAP最佳业务实践

SAP最佳业务实践:ETO–报价处理(232)-6项目计划

CJ2B项目计划 已经使用模板(包含进一步处理所需的全部设置)创建项目。现在,必须根据询价中的需求进行计划。同时,还有些调整也必须在此完成,即更改缺省工作,为活...

3355
来自专栏后端技术探索

携程异步消息系统实践

今天会跟大家分享一下我们在携程,现在应该是正在推广的一个新的消息系统,主要会偏重于讲一些架构和实现方面的内容。目前我在携程大概一年多都在做新的消息系统Herme...

1563
来自专栏云技术

腾讯云存储专家深度解读基于Ceph对象存储的混合云机制

  毫无疑问,乘着云计算发展的东风,Ceph已经是当今最火热的软件定义存储开源项目。如下图所示,它在同一底层平台之上可以对外提供三种存储接口,分别是文件存储、对...

9K14
来自专栏吴伟祥

最值得推荐的免费Linux防火墙 转

ClearOS在本次评估报告中是迄今为止最流行的防火墙发行版。它是一款基于CentOS和Red Hat Enterprise Linux,主要面向中小企业和分布...

7023
来自专栏用户2442861的专栏

关于图片或者文件在数据库的存储方式归纳

http://www.cnblogs.com/wangtao_20/p/3440570.html

6711
来自专栏Java技术栈

聊聊微服务架构及分布式事务解决方案!

分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布式事务的...

1494
来自专栏熊二哥

《大型网站技术架构》学习笔记-03案例篇

最后一篇案例篇,"愿站在巨人的肩膀上",加油熊二同学。 ? 常见案例 淘宝网架构演进 2017年5月18日,阿里巴巴集团公布2016财年的全年业绩,集团收...

23010
来自专栏沈唁志

PHP程序猿必知:PHP网站应该怎么做优化

4664

扫码关注云+社区

领取腾讯云代金券