聂永的博客

记录工作/学习的点点滴滴。

Tsung笔记之开篇

前言

有测试驱动的开发模式,目的在于确保业务层面功能是准确的,每一次新增、修改等动作确保都不会影响到现有功能。功能开发完成了,需要部署到线上,系统能够承载多大的用户量呢,这时候就需要借助于性能压测,也称之为压力测试,界定系统能够承载具体容量上限,从容应对业务的运营需要,扩容或缩容,心中有底。

工欲善其事,必先利其器。掌握一种压测工具,并切实应用到实践环境中,并以此不断迭代,压力测试驱动推动所开发后端应用处理性能逐渐完善。

目前成熟的支持支持TCP、HTTP等连接通道的压测工具不少,以前接触过Apache JMeter,后面又接触过Tsung,因为在实际环境下使用比较多,支持丰富的业务场景定义,并且可扩展性强,因此Tsung强力推荐之。

为什么要选择Tsung

  • 基于Erlang,并发处理性能好,可以模拟足够多海量用户,只要你有足够多的机器
  • 受益于Erlang,天然支持分布式,很欢快的运行在一个集群中
  • 支持协议众多 WebDAV/WebScoket/MQTT/MySQL/PGSQL/Shell/AQMP/JABBER/XMPP/LDAP 等
  • 传输通道支持 TCP/UDP/SSL,更底层支持IPv4/IPv6
  • 支持单机绑定多个IP:无论是虚拟IP,还是物理网卡绑定IP,可以突破单机端口65535的限制,扩展尽可能多的网络连接出口地址
  • 支持监控被压测的服务器,通过Erlang Agent/SNMP/Munin
  • 压测细节XML可配置,这是一个完全基于情景的压力测试行为清单,依赖于你的想象,呈现完整业务的表达
    • 场景可以是动态的,来自于文件、代码或者服务器响应可以构成下一个请求的参数,这就是可编程的请求嘛
    • 行为可以混搭,回话可以在不同场景中,按照不同的行为规范各自平行进行
    • 休眠,或暂停机制,是可以随机的,亲
    • 压测用户产生方式,动态有序或随机

总之,Tsung是一款开源的高性能分布式压力测试工具,支持可编程的情景化测试方案,要向发挥它的特性,依赖于人们的想象力和创造性。

为什么要压力测试驱动呢 ?

软件/系统架构往往着眼于总体结构,这个可以是一个逐渐完善的过程。这种自我的不断完善的驱动往往来自于实践、线上考验。而压力测试可以提供一种推动,尽心尽力暴露着架构在性能容量存在的一些不足和缺陷,促使着向着更好的方向发展。

系统的构建依赖于具体参与执行的人,就算是一群资深的工程师,业务上每一次功能的快速更迭、任何潜在局部修改都会导致影响、拖垮整体性能,这就是人们常说的 ”蝴蝶效应“,牵一发而动全身。

如何提早感知并且提早修复,这就需要压力测试的驱动,并且压力测试应该成为一个常规化的例行行为,日常化的动作。在每一次修改之后,都要过一轮的压测的碾压之后,提供当前后端应用处理的性能、容量等具体指标,用于指导后续业务上线业务的开展。

实际操作上的建议

在一般互联网公司,一般线上程序修改后之后,需要经过QA团队/部门全部功能回归、校验之后才能够上线,往往缺少压测环节,因为他/她们并不保证系统处理性能和容量是否恶化,系统的性能建立在系统总体的功能上,如何避免在性能上出现”牵一发而动全身“,建议有条件的QA同学/团队考虑增加性能压测环节,功能 + 性能双重回归,修改影响点清晰、透明化。

笔记列表

本系列笔记,基于tsung-1.6.0源码基础上分析,运行环境为Linux Centos 6。

笔记列表:

  1. Tsung笔记之主从模型篇
  2. Tsung笔记之主从资源协调篇
  3. Tsung笔记之压测端资源限制篇
  4. Tsung笔记之分布式增强跳出SSH羁绊篇
  5. Tsung笔记之IP直连支持篇
  6. Tsung笔记之监控数据收集篇
  7. Tsung笔记之插件编写篇
  8. Tsung笔记之100万用户压测执行步骤篇
  9. Tsung笔记之IP地址和端口限制突破篇

为了方便理解,一些用词说明:

  • 主节点,也称之为Master Node,指的是运行tsung_controller的应用服务实例,运行tsung启动应用自动产生“tsung_controller@机器名/IP”节点名称,一般使用过Erlang的同学会很明白
  • 从节点,即tsung client应用实例,对应 tsung/src/tsung 项目代码,由tsung_controller主节点控制启动、关闭、任务分配等

小结

参与一个实时性交互强的项目,从一开始单机支撑不够1万用户、平均请求响应时间约900毫秒,到目前混合部署的单机支撑50万用户、平均响应时间为16毫秒,这个过程中Tsung不断的压测推动着架构逐渐稳定、系统承载容量、QPS优化等完全达标。这是一个压力测试驱动性能改进的流程,每一步的改进能够得到正向反馈。

这一系列笔记,所谈核心是Tsung,无论是认知还是改进,最终都是为了理解利器的方方面面,方便着手于实践环境中,压测所带来的能量能够驱动我们的程序/服务性能提升、稳定运行,进而更好方便我们进行容量规划、线上部署等。

posted on 2016-07-22 15:36 nieyong 阅读(5459) 评论(1)  编辑  收藏 所属分类: 压测

评论

# re: Tsung笔记之开篇 2016-08-04 17:33 卢松松博客

不是码农,觉得太好了  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

公告

所有文章皆为原创,若转载请标明出处,谢谢~

新浪微博,欢迎关注:

导航

<2016年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(58)

随笔分类(130)

随笔档案(151)

个人收藏

最新随笔

搜索

最新评论

阅读排行榜

评论排行榜