SlideShare une entreprise Scribd logo
1  sur  27
压测工具Tsung介绍

褚霸 chuba@taobao.com
     2010/07/15
Tsung是什么?

开源的, 多协议的,分布的压力测试工具.

设计Tsung的目的是模拟真实用户测试基于IP的服务器程序的伸
缩性和性能
为什么要用Tsung

• 传统压力测试工具要收费,而且很贵, 难以扩展,无法很好的集
  群形成大的压力.
• Tsung内置支持 HTTP, WebDAV, SOAP, PostgreSQL,
  MySQL, LDAP and Jabber/XMPP协议.
• Tsung可以同时模拟上百万用户,如果你有够多的机器的话
• Tsung稳定可靠.
谁在用Tsung

国外:
• DGI (Direction Générale des impôts): French finance
  ministry
• Cap Gemini Ernst & Young
• IFP (Institut Français du Pétrole): French Research
  Organization for Petroleum
• LibertySurf
• Sun™for their Mooddlerooms platform on Niagara
  processors

国内:
• 华为
• SNS网站
Tsung的特性

• 高性能
• 插件机制支持多协议
• 利用OS IP别名技术在单个机器上使用多IP
• 服务器监控(CPU,内存,网络流量), 支持SNMP,Erlang,MUnin
  方式
• XML 方式的配置文件
• 模拟真实的流量, 虚拟用户的发呆时间和抵达律使用随机的概
  率分布
• HTML或者图表的方式报告测试结果
Tsung的亮点

•   高性能和分布Becnhmark
•   易于使用
•   多协议支持
•   监控目标服务器,方便找出瓶颈
Tsung内部结构图
名词定义和解释

每台物理机器通过IP别名技术有多个Client.
Client 是在服务器看来拥有独立IP的机器.
每个Client可以拥有多个节点,也就说Erlang的VM.
每个节点上可以跑很多虚拟用户.
每个虚拟用户跑很多的Session.
每个Session跑很多的Request.
每个Request是个具体的协议请求.
Tsung测试流程 三步走

配置录制或者编写
• tsung-recorder


执行压测
• tsung <options> start|stop|debug|status
统计报告
• tsung_stats.pl
Tsung压测对象

网路服务器 支持TCP, UDP, SSL

其他的对不起目前还不支持.
理解配置文件

XML格式的

场景描述都是通过这个配置文件

整个集群只用一份
Tsung支持的协议

•   Raw
•   HTTP 支持的很好
•   WebDAV
•   SOAP
•   PostgreSQL
•   MySQL 比较粗
•   LDAP
•   Jabber/XMPP
Client配置和选择
最简单的情况
• use_controller_vm="true"

maxusers参数:决定了一个节点能够支持的最多虚拟用户数,超过
了这个数目, 自动开启更多的节点.

IP别名技术, 模拟多个机器,目的有二个:
 • 方便服务器作Loadbalance
 • 解决单个IP的端口65535的问题

支持从Job调度器获取Client地址
Cpu参数: 如果设置的话, Tsung将按照设置的数目启动
beam.plain. 否则将启动beam.smp.

Weight参数: 决定了每个节点上面用户的比例
配置选项

thinktime
tcp_snd_buffer 设定TCP发送缓冲区tcp_rcv_buffer
hibernate 开启大大节约内存
定义Load

虚拟用户的形式: 动态和静态

不同的用户,不同的抵达率

指定Load执行总的时间
用户模拟

一个用户一个Erlang进程,可以模拟成千上万的用户.

行为模拟, 通过随机思考时间来模拟真实流量

静态用户可以控制进入点

动态用户由系统定期产生
定义Session

Sessions define the content of the scenario itself. They
describe the requests to execute.

Each session has a given probability. This is used to decide
which session a new user will execute. The sum of all session's
probabilities must be 100.
A transaction is just a way to have customized statistics.

支持请求循环
定义Request

典型的HTTP请求
request><http url="/" method="GET" version="1.1"></http>
</request>

典型的Mysql请求
<request><mysql type="sql">SHOW
TABLES</mysql></request>
参数化

• 动态替换 %%Module:Function%%,前提是设置了
  subst="true"参数
• 从外部csv格式文件获取
• 动态变量从httpHeader里面获取
• 从请求的回应中获取
压力产生

根据用户进入的频度,在单位时间内产生一定数量的用户.

根据Client的配置情况,生成不同的节点, 然后把用户按照节点的
能力和配置, 分配出去.

每个用户运行顺序执行特定的session.

每个session包括请求和Thinking,也就是说用户不是在请求就是
在thinking.
thingking的时候是不占用CPU的,所以我们可以支持很大数量的
用户.
统计报告

• tsung_stats.pl
• tsplot.pl
• tsung-rrd.pl
统计图表自定义

tsung.log是csv格式文本文件,可以很方便自己来解释
对服务器的监控

支持Erlang, snmp,Munin方式
获取CPU,内存,网络流量的使用情况
方便找出瓶颈
插件机制

不支持我家的协议,怎么办,怎么办?

如何写插件, 三步走, 无需关心网络和分布:

• getmessage
• parse
• 处理动态替换
故障排除

•   ssh信认配置
•   文件句柄用尽了
•   执行结果不对?dumptraffic="true"
•   Erlang版本以及安装路径一致
硬件和操作系统的选择

•   内存要大,越大越好
•   CPU核心要多,越多越好
•   操作系统, RHEL 5挺好的
•   协议栈,OS vm微调
•   32位和64位的选择
•   Erlang 版本的选择,Halfword?
谢谢大家

Any question?

Contenu connexe

En vedette

Cap 理论与实践
Cap 理论与实践Cap 理论与实践
Cap 理论与实践james tong
 
MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)Feng Yu
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能Feng Yu
 
了解集群
了解集群了解集群
了解集群Feng Yu
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述Feng Yu
 
低成本和高性能MySQL云架构探索
低成本和高性能MySQL云架构探索低成本和高性能MySQL云架构探索
低成本和高性能MySQL云架构探索Feng Yu
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践Feng Yu
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Feng Yu
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)Feng Yu
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈Feng Yu
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术Feng Yu
 
Systemtap
SystemtapSystemtap
SystemtapFeng Yu
 
了解IO设备
了解IO设备了解IO设备
了解IO设备Feng Yu
 
Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言Feng Yu
 
了解网络
了解网络了解网络
了解网络Feng Yu
 
了解Cpu
了解Cpu了解Cpu
了解CpuFeng Yu
 

En vedette (16)

Cap 理论与实践
Cap 理论与实践Cap 理论与实践
Cap 理论与实践
 
MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能
 
了解集群
了解集群了解集群
了解集群
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述
 
低成本和高性能MySQL云架构探索
低成本和高性能MySQL云架构探索低成本和高性能MySQL云架构探索
低成本和高性能MySQL云架构探索
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术
 
Systemtap
SystemtapSystemtap
Systemtap
 
了解IO设备
了解IO设备了解IO设备
了解IO设备
 
Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言
 
了解网络
了解网络了解网络
了解网络
 
了解Cpu
了解Cpu了解Cpu
了解Cpu
 

Similaire à Tsung 压力测试工具

薛伟:腾讯广点通——大数据之上的实时精准推荐
薛伟:腾讯广点通——大数据之上的实时精准推荐薛伟:腾讯广点通——大数据之上的实时精准推荐
薛伟:腾讯广点通——大数据之上的实时精准推荐hdhappy001
 
App operationattaobao-velocity2010 bj-final
App operationattaobao-velocity2010 bj-finalApp operationattaobao-velocity2010 bj-final
App operationattaobao-velocity2010 bj-finaliambuku
 
千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江imShining @DevCamp
 
微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构Chen Fei
 
开源软件营销策略
开源软件营销策略开源软件营销策略
开源软件营销策略linhaicaoyuan
 
开源社区生生不息的创新土壤
开源社区生生不息的创新土壤开源社区生生不息的创新土壤
开源社区生生不息的创新土壤Steven Cheng
 
移动测试中心Bmtc
移动测试中心Bmtc移动测试中心Bmtc
移动测试中心Bmtcdrewz lin
 
高可用和可伸缩架构
高可用和可伸缩架构高可用和可伸缩架构
高可用和可伸缩架构LI Daobing
 
超融合桌面雲完美方案_v8.2
超融合桌面雲完美方案_v8.2超融合桌面雲完美方案_v8.2
超融合桌面雲完美方案_v8.2Samuel Lu
 
AI/ML-driven closed-loop automation using ONAP - Kate Hsuan
AI/ML-driven closed-loop automation using ONAP - Kate HsuanAI/ML-driven closed-loop automation using ONAP - Kate Hsuan
AI/ML-driven closed-loop automation using ONAP - Kate HsuanHanLing Shen
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍36Kr.com
 
03 李实恭-乘云之势以智致远 0611
03 李实恭-乘云之势以智致远 061103 李实恭-乘云之势以智致远 0611
03 李实恭-乘云之势以智致远 0611ikewu83
 
美团点评技术沙龙011 - 团购系统流量和容量评估实践
美团点评技术沙龙011 - 团购系统流量和容量评估实践美团点评技术沙龙011 - 团购系统流量和容量评估实践
美团点评技术沙龙011 - 团购系统流量和容量评估实践美团点评技术团队
 
翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践hdhappy001
 
翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践hdhappy001
 
How to build your own robot with ibm bluemix&watson
How to build your own robot with ibm bluemix&watsonHow to build your own robot with ibm bluemix&watson
How to build your own robot with ibm bluemix&watson湯米吳 Tommy Wu
 
AWS_Educate_Ambassador_Day_TAIWAN_Track_B - Build a Telegram Chatbot using AW...
AWS_Educate_Ambassador_Day_TAIWAN_Track_B - Build a Telegram Chatbot using AW...AWS_Educate_Ambassador_Day_TAIWAN_Track_B - Build a Telegram Chatbot using AW...
AWS_Educate_Ambassador_Day_TAIWAN_Track_B - Build a Telegram Chatbot using AW...土撥 JIE
 
Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里li luo
 
SDN ryu 專題安裝
SDN ryu 專題安裝SDN ryu 專題安裝
SDN ryu 專題安裝承樺 董
 
美团点评技术沙龙05 - Node.js业务应用实践和服务监控
美团点评技术沙龙05 - Node.js业务应用实践和服务监控美团点评技术沙龙05 - Node.js业务应用实践和服务监控
美团点评技术沙龙05 - Node.js业务应用实践和服务监控美团点评技术团队
 

Similaire à Tsung 压力测试工具 (20)

薛伟:腾讯广点通——大数据之上的实时精准推荐
薛伟:腾讯广点通——大数据之上的实时精准推荐薛伟:腾讯广点通——大数据之上的实时精准推荐
薛伟:腾讯广点通——大数据之上的实时精准推荐
 
App operationattaobao-velocity2010 bj-final
App operationattaobao-velocity2010 bj-finalApp operationattaobao-velocity2010 bj-final
App operationattaobao-velocity2010 bj-final
 
千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江
 
微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构
 
开源软件营销策略
开源软件营销策略开源软件营销策略
开源软件营销策略
 
开源社区生生不息的创新土壤
开源社区生生不息的创新土壤开源社区生生不息的创新土壤
开源社区生生不息的创新土壤
 
移动测试中心Bmtc
移动测试中心Bmtc移动测试中心Bmtc
移动测试中心Bmtc
 
高可用和可伸缩架构
高可用和可伸缩架构高可用和可伸缩架构
高可用和可伸缩架构
 
超融合桌面雲完美方案_v8.2
超融合桌面雲完美方案_v8.2超融合桌面雲完美方案_v8.2
超融合桌面雲完美方案_v8.2
 
AI/ML-driven closed-loop automation using ONAP - Kate Hsuan
AI/ML-driven closed-loop automation using ONAP - Kate HsuanAI/ML-driven closed-loop automation using ONAP - Kate Hsuan
AI/ML-driven closed-loop automation using ONAP - Kate Hsuan
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍
 
03 李实恭-乘云之势以智致远 0611
03 李实恭-乘云之势以智致远 061103 李实恭-乘云之势以智致远 0611
03 李实恭-乘云之势以智致远 0611
 
美团点评技术沙龙011 - 团购系统流量和容量评估实践
美团点评技术沙龙011 - 团购系统流量和容量评估实践美团点评技术沙龙011 - 团购系统流量和容量评估实践
美团点评技术沙龙011 - 团购系统流量和容量评估实践
 
翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践
 
翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践翟艳堂:腾讯大规模Hadoop集群实践
翟艳堂:腾讯大规模Hadoop集群实践
 
How to build your own robot with ibm bluemix&watson
How to build your own robot with ibm bluemix&watsonHow to build your own robot with ibm bluemix&watson
How to build your own robot with ibm bluemix&watson
 
AWS_Educate_Ambassador_Day_TAIWAN_Track_B - Build a Telegram Chatbot using AW...
AWS_Educate_Ambassador_Day_TAIWAN_Track_B - Build a Telegram Chatbot using AW...AWS_Educate_Ambassador_Day_TAIWAN_Track_B - Build a Telegram Chatbot using AW...
AWS_Educate_Ambassador_Day_TAIWAN_Track_B - Build a Telegram Chatbot using AW...
 
Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里
 
SDN ryu 專題安裝
SDN ryu 專題安裝SDN ryu 專題安裝
SDN ryu 專題安裝
 
美团点评技术沙龙05 - Node.js业务应用实践和服务监控
美团点评技术沙龙05 - Node.js业务应用实践和服务监控美团点评技术沙龙05 - Node.js业务应用实践和服务监控
美团点评技术沙龙05 - Node.js业务应用实践和服务监控
 

Plus de Feng Yu

Erlang开发实践
Erlang开发实践Erlang开发实践
Erlang开发实践Feng Yu
 
了解应用服务器
了解应用服务器了解应用服务器
了解应用服务器Feng Yu
 
我为什么要选择RabbitMQ
我为什么要选择RabbitMQ我为什么要选择RabbitMQ
我为什么要选择RabbitMQFeng Yu
 
了解内存
了解内存了解内存
了解内存Feng Yu
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Feng Yu
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)Feng Yu
 
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践Feng Yu
 
开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)Feng Yu
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computingFeng Yu
 
Inside Erlang Vm II
Inside Erlang Vm IIInside Erlang Vm II
Inside Erlang Vm IIFeng Yu
 

Plus de Feng Yu (12)

Erlang开发实践
Erlang开发实践Erlang开发实践
Erlang开发实践
 
了解应用服务器
了解应用服务器了解应用服务器
了解应用服务器
 
我为什么要选择RabbitMQ
我为什么要选择RabbitMQ我为什么要选择RabbitMQ
我为什么要选择RabbitMQ
 
了解内存
了解内存了解内存
了解内存
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)
 
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践
 
开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computing
 
Go
GoGo
Go
 
Inside Erlang Vm II
Inside Erlang Vm IIInside Erlang Vm II
Inside Erlang Vm II
 
Go Lang
Go LangGo Lang
Go Lang
 

Tsung 压力测试工具