概述
Tsung是一个开源的多协议分布式负载测试工具,它可以用于强调HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP、MQTT和Jabber/XMPP服务器。
Tsung是一个基于GPLv2许可协议发布的自由软件。
Tsung的目的是模拟用户,以测试基于IP的客户机/服务器应用程序的可伸缩性和性能。您可以使用它来对服务器进行负载和压力测试。许多协议已经被实现和测试,并且可以很容易地扩展。它可以分布在多个客户机上,并且能够同时模拟数十万虚拟用户(如果有足够的硬件,甚至可以模拟数百万)。
Tsung是用Erlang开发的,Erlang是爱立信开发的一种开源语言,用于构建健壮的容错分布式应用程序。
tsung的工作原理
(1) Tsung的每一个虚拟用户就是一个erlang的轻量进程。这点和loadrunner有很大的区别。
(2) 虚拟用户完成session后就消失。
(3) 大量的虚拟用户(erlang轻量进程)建立在erlangVM上。
(4) 一台测试机可以启多个erlangVM,目前按照1个cpu启动1个erlangVM。
介绍
什么是Tsung
Tsung(前IDX-Tsunami)是一个分布式负载测试工具。它是独立于协议的,目前可以用于对shttp、WebDAV、SOAP、PostgreSQL、MySQL、AMQP、MQTT、LDAP和Jabber/XMPP服务器进行压力测试。
Tsung的主要优势是它能够从一台机器上模拟大量同时存在的用户;此外,您还可以在集群上为机器分配用户。当在集群上使用时,您可以使用一个简单的集群(易于设置和维护)在服务器上实现一个非常可观的负载。您还可以在ec2这样的云上使用Tsung。
它是在GNU通用公共许可证版本2下发布的。
特点
主要特点
- 高性能
Tsung可以模拟每台物理计算机上同时存在的大量用户:它可以在单个CPU上模拟数千个用户(注意:模拟的用户并不总是活动的:它可以在thinktimeperiod期间空闲)。传统的注射工具不能超过几百(提示:如果你想做的只是要求一个URLin a循环,使用ab;但是,如果您想用扩展的报告构建复杂的场景,Tsung非常适合您)。 - 分布式
负载可以分布在客户机集群上 - 使用插件系统的多协议
目前支持HTTP(标准web流量和SOAP)、WebDAV、Jabber/XMPP和PostgreSQL。LDAP和MySQL插件首次包含在1.3.0版本中。 - SSL支持
- 使用底层OS IP别名,可以在一台机器上使用多个IP地址
- 在远程服务器或SNMP上使用Erlang代理监视操作系统(CPU、内存和网络流量)
- XML配置系统
复杂用户的场景是用XML编写的。可以使用一个简单的浏览器使用theTsung记录器(只使用HTTP和PostgreSQL)编写场景。 - 动态场景
您可以在负载下从服务器获取动态数据(无需编写任何代码),并在后续请求中重新注入它。当字符串(或regexp)匹配服务器响应时,还可以循环、重启或停止asession。 - 混合行为
在同一个基准测试期间,可以使用多个会话来模拟不同类型的用户。您可以定义基准场景中各种行为的比例。 - 随机过程
为了生成真实的流量,用户的思考时间和到达率可以使用概率分布(目前是指数级的)随机化。
HTTP相关功能
- 支持HTTP/1.0和HTTP/1.1
- GET、POST、PUT、DELETE、HEAD、OPTIONS和PATCH请求
- Cookie:自动cookie管理(但也可以手动添加更多cookie)
- ’ GET If-modified since '类型的请求
- 基本认证和摘要。OAuth 1.0
- 用户代理支持
- 可以添加任何HTTP头
- 使用Web浏览器记录会话的代理模式
-SOAP支持使用HTTP模式(SOAPAction HTTP报头ishandled)。 - HTTP服务器或代理服务器负载测试。
WEBDAV相关特性
WebDAV (RFC 4918)插件是HTTP插件的超集。它添加了以下功能(还支持WebDAV (RFC 3253)的一些版本化扩展):
- 实现方法:删除、连接、PROPFIND、PROPPATCH、复制、移动、锁定、解锁、MKCOL、报告、选项、MKACTIVITY、签出、合并
- 记录深度、IF、超时覆盖、目标、URL和锁令牌头。
Jabber/XMPP相关功能
- 身份验证(纯文本、摘要和sip-digest)。STARTTLS
- 存在和注册消息
- 存在和注册消息
- 加入房间,在房间内发送信息,更改昵称
- 花名册设置和获取请求
- 可以在特定的操作上设置全局用户同步
- BOSH & XMPP在Websocket上
- 原始的XML消息
-PubSub - 支持多个vhost实例
- 隐私列表:获取所有隐私列表名称,将列表设置为活动列表
PostgreSQL相关特性
- 身份验证(密码或MD5)
- 简单的协议
- 基本查询和扩展查询
- 记录会话的代理模式
MySQL相关特性
这个插件只适用于MySQL 4.1或更高版本。
- 只使用安全认证方法(MySQL >= 4.1)
- 基本查询
Websocket相关特性
这个插件是实验性的。目前只支持RFC 6455。作为一种服务器类型,它像其他传输协议liketcp和udp一样工作,任何特定于应用程序的协议数据都可以在它上面发送。
您可以在examples/websocket.xml中找到用作会话类型的示例。
AMQP相关特性
这个插件是实验性的。目前只支持AMQP-0.9.1。您可以在examples/ amqm .xml中找到示例。
MQTT相关特性
这个插件是实验性的。它支持MQTT V3.1。您可以在examples/mqtt.xml中找到示例。
- 使用选项连接到mqtt代理
- 向代理发布mqtt消息
- 订阅/退订的话题
- 支持QoS 0和QoS 1
LDAP 相关特性
这个插件是实验性的。它支持MQTT V3.1。您可以在examples/mqtt.xml中找到示例。
原始插件相关特性
- 兼容TCP / UDP / SSL
- 原始消息
- no_ack,用于消息的本地或全局ack
完整的报告集
Tsung制作的测量和统计数据非常有特色。它们都用图形表示。Tsung producesstatistics有关:
- 性能: 响应时间、连接时间、基于请求分组指令(称为事务)的用户场景分解、每秒请求
- 错误: 统计页面返回代码来跟踪错误
- 目标服务器行为:Erlang代理可以从目标服务器收集信息。Tsung为CPU和内存消耗以及网络流量生成图表。SNMP和munin也支持tomonitor远程服务器。
par注意,Tsung自己负责同步过程。收集的统计数据是«synchronized»。
可以在基准测试期间生成图形,因为统计数据是实时收集的。
优势
Tsung与其他注入工具相比有以下几个优点:
- 高性能分布式基准测试: 您可以使用Tsung来模拟成千上万的虚拟用户。
- 易用性: 对于所有支持的协议,艰苦的工作已经完成。不需要编写复杂的脚本。动态场景只需要少量的代码。
- 多协议支持:例如,Tsung是测试SOAP应用程序的唯一工具之一
- 监视目标服务器,分析其行为并发现瓶颈。例如,它被用来分析集群对称性(负载是否得到了适当的平衡?),并确定三个集群层(Web引擎、EJBengine和数据库)上机器的最佳组合。