列举几个 oschina 收录的开源性能测试或相关工具:
- benchbase http://www.oschina.net/p/benchbase
benchbase 是一个项目用来存储和管理 JMeter 或者 FunkLoad 压力测试结果和监控日志。提供详细的报表和图表。
- 性能测试工具 CBenchmark http://www.oschina.net/p/cbenchmark
CBenchmark—-CharlesCui’s Benchmark
这是我实现的一款性能测试工具,之前在工作中常用LoadRunner之类的工具来完成性能测试,但受限于LR极其昂贵的Lisence以及难以定制的SDK,于是我用C/C++实现了这个工具,并借助Linux系统对线程和进程的良好调度,可以实现极高的并发压力.
特点|Feature
本程序和当前性能测试解决方案相比,
可以实现极高的定制化:开放所有API,用户可以基于这些API实现自己的性能测试工具.
无限制:本产品完全免费,不会像现有成熟解决方案一样基于并发数,或者基于使用协议的Lisense限制。
高性能高并发:可提供比现有产品高出很多的并发能力,本程序使用C语言实现所有的代码。
通用性:由于本产品测试用例的业务实现是由客户完成,所以本产品的作用不限于某种测试协议,所以本产品是一个通用的性能测试工具.
执行过程可控:测试执行过程中用户可以通过Ctrl+C来控制本产品的执行。
特有的测试用例加载模式:对测试用例加载的模式和市面上的性能测试产品都不一样,用户可以将CBenchmark当做第三方库编码进入测试代码,也可以将CBenchmark当做工具,在执行的时候动态加载测试代码以产生压力.
本产品理论支持所有的服务端性能测试。
对于非标准协议的性能测试,我推荐您使用本产品。
- 性能和负载测试工具 Faban http://www.oschina.net/p/faban
Faban 是Sun Microsystems 用纯粹的Java 1.5+ 编写的,而且在CDDL-1.0 许可下是开源的。Faban 似乎只关心各种类型服务器的基准调教,包括Web 服务器。Faban 是为高性能和紧凑调速而精心编写的,因此任何测量都与服务器的真实性能尽可能接近。例如,在没有运行其他Faban 代码时收集基准调速数据,而只在基准调校过程缔结之后才分析数据。要想获得最好的性能,则这是所有基准运行的惯用方法。
Faban 还以Web 应用程序的形式提供了非常良好的配置与管理平台。为了服务于该控制平台(Web应用程序),Faban自身现已整合到了Tomcat 的服务器中。Tomcat 是Faban 的一部分,任何对Tomcat 和基准调校都感兴趣的Java 开发者都能阅读Faban 的文档和源码,而且可选择性地参与Faban 的开发。如果您是一位Java 开发者,且正寻找最有特色、长期的调校解决方案,Faban 应该是您要用到的工具。
相关链接
项目主页:http://java.net/projects/faban/
项目文档:http://www.opensparc.net/sunsource/faban/www/index.html
Faban Quick Start Tutorial:http://www.testnscale.com/docs/QuickStartTutorial.html
- TCP协议测试工具 tcpjunk http://www.oschina.net/p/tcpjunk
tcpjunk是一个工具,用于测试TCP协议的产生和模糊的网络流量。
- 性能分析工具 DTrace http://www.oschina.net/p/dtrace
DTrace,也称为动态跟踪,是由 Sun? 开发的一个用来在生产和试验性生产系统上找出系统瓶颈的工具。 在任何情况下它都不是一个调试工具, 而是一个实时系统分析寻找出性能及其他问题的工具。
DTrace 是个特别好的分析工具,带有大量的帮助诊断系统问题的特性。 还可以使用预先写好的脚本利用它的功能。 用户也可以通过使用 DTrace D 语言创建他们自己定制的分析工具, 以满足特定的需求。
4 还有一个很特别的工具: tcpcopy http://code.google.com/p/tcpcopy/
an online request replication tool, fit for online testing, stress testing, performance evaluation,etc
tcpcopy是一种请求复制(所有基于tcp的packets)工具,其应用领域较广,我们曾经应用于
网易的广告投放系统,urs系统,nginx hmux协议等系统,避免了上线带来的很多问题。
我们即将应用tcpcopy于membase替换现有mecached系统的任务中。由于membase还不够
成熟,不适合直接上线,利用tcpcopy程序,可以把访问memcached的系统流量复制一份到
membase系统中去。对于membase来说,这份流量就是访问membase的,跟直接上线
membase效果一样,就可以做各种试验,查看membase的各种特性。
tcpcopy六大功能:
1)分布式压力测试工具,利用在线数据,可以测试系统能够承受的压力大小(远比ab压力测
试工具真实地多),也可以提前发现一些bug
2)如果后端的连接是短连接并且请求体不大,请求丢失率一般都非常低(1/10万),可以应用于热备份
3)普通上线测试,可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题,让开
发者有信心上线
4)对比试验,同样请求,针对不同或不同版本程序,可以做性能对比等试验
5)利用级联tcpcopy,构造无限在线压力,满足中小网站压力测试要求
6)实战演习(架构师必备)
特点:
1)实时
2)效果真实
3)低负载,不影响在线
4)操作简单
5)分布式
6)意义非凡
Chris评论:这个工具的特别之处在于,它针对线上系统,采用"copy tcp packet"的方式,让你明确地知道线上系统是否可以承受两倍于目前的负载!
5 LoadUI/soapUI http://www.loadui.org/About-loadUI/gallery.html
loadUI. The art of Load Testing.
loadUI is a open source Load Testing solution that is free and cross-platform. With a visual, drag-and-drop interface, it allows you to create, configure and redistribute your Load Tests interactively and in real-time. In a single test environment, loadUI provides complete test coverage and supports all the standard protocols and technologies. And it’s so powerful, it generates scalable, high-volume and real-world load from any number of local and remote computers. Meet loadUI, the future of Load Testing.
Chris评论:LoadUI那牛X的拖拽和华丽的外表,非常吸引人,人家还用了JavaFX呢!!! 当然功能也非常强大,但我个人的使用经验还很少,不能有更深入评论。
6 最后是著名的 Tsung http://tsung.erlang-projects.org/
Tsung is an open-source multi-protocol distributed load testing tool
It can be used to stress HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and Jabber/XMPP servers. Tsung is a free software released under the GPLv2 license.
The purpose of Tsung is to simulate users in order to test the scalability and performance of IP based client/server applications. You can use it to do load and stress testing of your servers. Many protocols have been implemented and tested, and it can be easily extended.
It can be distributed on several client machines and is able to simulate hundreds of thousands of virtual users concurrently (or even millions if you have enough hardware ...).
Tsung is developed in Erlang, an open-source language made by Ericsson for building robust fault-tolerant distributed applications.
Chris评论:Tsung 算是分布式施压的流行工具之一,使用erlang等开发,基本安装步骤如下:
1 erlang
2 perl5
- Template Toolkit
3 gnuplot
- libpng
- libgd
- fonts: http://www.my-guides.net/en/images/stories/fedora12/msttcore-fonts-2.0-3.noarch.rpm
4 python
- numpy
- matplotlib
PS:
tsung的结果数据通过一个自带的perl脚本格式化为html,并且调用gnuplot来绘制了图形,存放在log目录里;
如果是在服务器上,或要在其他机器上查看,可以cd到log目录,然后直接执行"python -m simpleHttpServer" ,之后可以通过浏览器访问 ip:8000 来浏览了。
总结:
大多数测试工具上手都还算不难,无外乎 录制脚本或者手动编写脚本,设置controller和listener等,执行测试,结果分析/绘图等。
越自动化的工具其定制性和灵活性也相对变弱,而越灵活的工具其自动化能力也相对变弱。
性能测试涉及很多方面,尤其是在高并发的海量用户场景下,从最前面的浏览器缓存、CDN到最后面的内核修改,每个环节都有事可做;
但在实际项目中,要根据系统发展的不同阶段选择不同的方式方法。首要任务都是找出目前瓶颈,在诸多目标中求平衡!