mysql压力测试工具
概述
两种测试类型:集成式测试和单组件式测试。毫不奇怪,有些工具是针对整个应用进行测试,也有些工具是针对MySQL或者其他组件单独进行测试的。集成式测试,通常是获得整个应用概况的最佳手段。
一、集成式测试
1.1 ab
ab是一个Apache HTTP服务器基准测试工具。它可以测试HTTP服务器每秒最多可以处理多少请求。如果测试的是Web应用服务,这个结果可以转换成整个应用每秒可以满足多少请求。这是个非常简单的工具,用途也有限,只能针对单个URL进行尽可能快的压力测试。关于ab的更多信息可以参考
http://htpd.apache.org/docs/2.0/programs/ab.html。
1.2 http_load
http_load这个工具概念上和ab类似,也被设计为对Web服务器进行测试,但比ab要更加灵活。可以通过一个输入文件提供多个URL,htypload在这些URL中随机选择进行测试。也可以定制http_load,使其按照时间比率进行测试,而不仅仅是测试最大请求处理能力。更多信息请参考
http:/hwwwacme.com/software/htup-load/。
1.3 JMeter
Meter是一个Java应用程序,可以加载其他应用并测试其性能。它虽然是设计用来测试Web应用的,但也可以用于测试其他诸如FTP服务器,或者通过JDBC进行数据库查询测试。 JMeter比ab和htp_load都要复杂得多。例如,它可以通过控制预热时间等参数,更加灵活地模拟真实用户的访问。JMeter拥有绘图接口(带有内置的图形化处理的功能),还可以对测试进行记录,然后离线重演测试结果。更多信息请参考
http://jakarta.apache.org/jimeter/。
二、单组件式测试工具
2.1 mysqlslap mysqlslap
http://de.mysql.com/doc/refman/5.1/en/mysglslap.html可以模拟服务器的负载,并输出计时信息。它包含在MySQL5.1的发行包中,应该在MySQL4.1或者更新的版本中都可以使用。测试时可以执行并发连接数,并指定SQL语句(可以在命令行上执行,也可以把SQL语句写人到参数文件中)。如果没有指定SQL语句,mysglslap 会自动生成查询schema的SELECT语句。
2.2 MySQL Benchmark Suite(sql-bench)
可以用于在不同数据库服务器上进行比较测试。它是单线程的,主要用于测试服务器执行查询的速度。结果会显示哪种类型的操作在服务器上执行得更快。 这个测试套件的主要好处是包含了大量预定义的测试,容易使用,所以可以很轻松地用于比较不同存储引擎或者不同配置的性能测试。其也可以用于高层次测试,比较两个服务器的总体性能。当然也可以只执行预定义测试的子集(例如只测试50|第2章 MySQL基准测试UPDATE的性能)。这些测试大部分是CPU密集型的,但也有些短时间的测试需要大量的磁盘I/O操作。 这个套件的最大缺点主要有:它是单用户模式的,测试的数据集很小且用户无法使用指定的数据,并且同一个测试多次运行的结果可能会相差很大。因为是单线程且串行执行的,所以无法测试多CPU的能力,只能用于比较单CPU服务器的性能差别。 使用这个套件测试数据库服务器还需要Perl和BDB的支持,相关文档请参考
http://dev.mysql.com/doc/en/mysql-benchmarks.html/
2.3 Super Smack
(htup://vegan.nettony/supersmack/)是一款用于MySQL和PostgreSQL的基准测试工具,可以提供压力测试和负载生成。这是一个复杂而强大的工具,可以模拟多用户访问,可以加载测试数据到数据库,并支持使用随机数据填充测试表。 测试定义在“smack”文件中,smack文件使用一种简单的语法定义测试的客户端、表、查询等测试要素。
2.4 Database Test Suite
是由开源软件开发实验室(OSDL,Open Source Development Labs)设计的,发布在SourceForge 网站
(http://sourceforge.net/projects/osdldbt/) 上,这是一款类似某些工业标准测试的测试工具集,例如由事务处理性能委员会(TPC,Transaction Processing Performance Council)制定的各种标准。特别值得一提的是,其中的dbt2就是一款免费的TPC-COLTP测试工具(未认证)。之前本书作者经常使用该工具,不过现在已经使用自己研发的专用于MySQL的测试工具替代了。
2.5 Percona\’s TPCC-MySOL Tool
我们开发了一个类似TPC-C的基准测试工具集,其中有部分是专门为MySQL测试开发的。在评估大压力下MySQL的一些行为时,我们经常会利用这个工具进行测试(简单的测试,一般会采用sysbench替代)。该工具的源代码可以在https://launchpad.net/perconatools下载,在源码库中有一个简单的文档说明。
2.6 sysbench sysbench
https:/launchpad.net/sysbench是一款多线程系统压测工具。它可以根据影响数据库服务器性能的各种因素来评估系统的性能。例如,可以用来测试文件I/0、操作系统调度器、内存分配和传输速度、POSIX线程,以及数据库服务器等。 sysbench 支持Lua脚本语言(htup://www.lua.org),Lua对于各种测试场景的设置可以非常灵活。sysbench是我们非常喜欢的一种全能测试工具,支持MySQL、操作系统和硬件的硬件测试。