Tsung 压力测试工具

12,017 views

Published on

介绍了Tsung的方方面面

Published in: Technology, News & Politics
1 Comment
17 Likes
Statistics
Notes
  • LZ啊,对于17页有个小疑问,哈:

    tsplot在目前的tsung版本(1.4.2)中,是用python写的,用了numpy和matplotlib,主要用于对多个tsung结果做对比并可视化输出。

    也许当时你是用tsung版本(1.3.3 ?)确实用perl?所以叫tsplot.pl ? 有空我下载以前的旧版本确认下 :)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
12,017
On SlideShare
0
From Embeds
0
Number of Embeds
2,702
Actions
Shares
0
Downloads
196
Comments
1
Likes
17
Embeds 0
No embeds

No notes for slide

Tsung 压力测试工具

  1. 1. 压测工具Tsung介绍 褚霸 chuba@taobao.com 2010/07/15
  2. 2. Tsung是什么? 开源的, 多协议的,分布的压力测试工具. 设计Tsung的目的是模拟真实用户测试基于IP的服务器程序的伸 缩性和性能
  3. 3. 为什么要用Tsung • 传统压力测试工具要收费,而且很贵, 难以扩展,无法很好的集 群形成大的压力. • Tsung内置支持 HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and Jabber/XMPP协议. • Tsung可以同时模拟上百万用户,如果你有够多的机器的话 • Tsung稳定可靠.
  4. 4. 谁在用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网站
  5. 5. Tsung的特性 • 高性能 • 插件机制支持多协议 • 利用OS IP别名技术在单个机器上使用多IP • 服务器监控(CPU,内存,网络流量), 支持SNMP,Erlang,MUnin 方式 • XML 方式的配置文件 • 模拟真实的流量, 虚拟用户的发呆时间和抵达律使用随机的概 率分布 • HTML或者图表的方式报告测试结果
  6. 6. Tsung的亮点 • 高性能和分布Becnhmark • 易于使用 • 多协议支持 • 监控目标服务器,方便找出瓶颈
  7. 7. Tsung内部结构图
  8. 8. 名词定义和解释 每台物理机器通过IP别名技术有多个Client. Client 是在服务器看来拥有独立IP的机器. 每个Client可以拥有多个节点,也就说Erlang的VM. 每个节点上可以跑很多虚拟用户. 每个虚拟用户跑很多的Session. 每个Session跑很多的Request. 每个Request是个具体的协议请求.
  9. 9. Tsung测试流程 三步走 配置录制或者编写 • tsung-recorder 执行压测 • tsung <options> start|stop|debug|status 统计报告 • tsung_stats.pl
  10. 10. Tsung压测对象 网路服务器 支持TCP, UDP, SSL 其他的对不起目前还不支持.
  11. 11. 理解配置文件 XML格式的 场景描述都是通过这个配置文件 整个集群只用一份
  12. 12. Tsung支持的协议 • Raw • HTTP 支持的很好 • WebDAV • SOAP • PostgreSQL • MySQL 比较粗 • LDAP • Jabber/XMPP
  13. 13. Client配置和选择 最简单的情况 • use_controller_vm="true" maxusers参数:决定了一个节点能够支持的最多虚拟用户数,超过 了这个数目, 自动开启更多的节点. IP别名技术, 模拟多个机器,目的有二个: • 方便服务器作Loadbalance • 解决单个IP的端口65535的问题 支持从Job调度器获取Client地址 Cpu参数: 如果设置的话, Tsung将按照设置的数目启动 beam.plain. 否则将启动beam.smp. Weight参数: 决定了每个节点上面用户的比例
  14. 14. 配置选项 thinktime tcp_snd_buffer 设定TCP发送缓冲区tcp_rcv_buffer hibernate 开启大大节约内存
  15. 15. 定义Load 虚拟用户的形式: 动态和静态 不同的用户,不同的抵达率 指定Load执行总的时间
  16. 16. 用户模拟 一个用户一个Erlang进程,可以模拟成千上万的用户. 行为模拟, 通过随机思考时间来模拟真实流量 静态用户可以控制进入点 动态用户由系统定期产生
  17. 17. 定义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. 支持请求循环
  18. 18. 定义Request 典型的HTTP请求 request><http url="/" method="GET" version="1.1"></http> </request> 典型的Mysql请求 <request><mysql type="sql">SHOW TABLES</mysql></request>
  19. 19. 参数化 • 动态替换 %%Module:Function%%,前提是设置了 subst="true"参数 • 从外部csv格式文件获取 • 动态变量从httpHeader里面获取 • 从请求的回应中获取
  20. 20. 压力产生 根据用户进入的频度,在单位时间内产生一定数量的用户. 根据Client的配置情况,生成不同的节点, 然后把用户按照节点的 能力和配置, 分配出去. 每个用户运行顺序执行特定的session. 每个session包括请求和Thinking,也就是说用户不是在请求就是 在thinking. thingking的时候是不占用CPU的,所以我们可以支持很大数量的 用户.
  21. 21. 统计报告 • tsung_stats.pl • tsplot.pl • tsung-rrd.pl
  22. 22. 统计图表自定义 tsung.log是csv格式文本文件,可以很方便自己来解释
  23. 23. 对服务器的监控 支持Erlang, snmp,Munin方式 获取CPU,内存,网络流量的使用情况 方便找出瓶颈
  24. 24. 插件机制 不支持我家的协议,怎么办,怎么办? 如何写插件, 三步走, 无需关心网络和分布: • getmessage • parse • 处理动态替换
  25. 25. 故障排除 • ssh信认配置 • 文件句柄用尽了 • 执行结果不对?dumptraffic="true" • Erlang版本以及安装路径一致
  26. 26. 硬件和操作系统的选择 • 内存要大,越大越好 • CPU核心要多,越多越好 • 操作系统, RHEL 5挺好的 • 协议栈,OS vm微调 • 32位和64位的选择 • Erlang 版本的选择,Halfword?
  27. 27. 谢谢大家 Any question?

×