tsung简介:

—  Tsung是开源的基于Erlang语言开发的多协议分布式压力测试工具,它能用来压力测试HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和 Jabber/XMPP的服务器。它可以单机使用,也可以分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。1.5.1版本后开始支持mqtt,最新版本1.6.0,1.6.0版本开始支持mqtt的用户名密码认证。

—  Tsung在运行时,可以由多个虚拟机组成,每个虚拟机下有很多用户,每个用户可以产生很多session,一个session由很多request组成,这是一个很典型的树状结构。tsung使用这个树状结构来生成压力。

—  Tsung的每一个虚拟用户就是一个erlang的轻量进程,这点和loadrunner有很大的区别(loadrunner多线程);erlang虚拟用户完成session后就消失;大量的虚拟用户(erlang轻量进程)建立在erlangVM上;一台测试机可以启多个erlangVM,目前按照1个cpu启动1个erlangVM。

—  “小型”的压力测试一般不需要很多tsung客户机,一台tsung就可以打出很大的压力, 因为tsung使用了epoll技术,在一个进程中,就可以管理上万级别的socket(注意ulimit -n的限制),相对于其它压力测试工具使用多线程,在打出相同压力的情况下,tsung对本机的资源消耗要小得多。另外,tsung的多进程可以充分使用CPU的多核,可以更充分地利用客户机的硬件资源

tsung工作原理:

(1)Tsung的每一个虚拟用户就是一个erlang的轻量进程。这点和loadrunner有很大的区别。
(2)虚拟用户完成session后就消失。
(3)大量的虚拟用户(erlang轻量进程)建立在erlangVM上。
(4)一台测试机可以启多个erlangVM,目前按照1个cpu启动1个erlangVM

Tsung内部实现:Tsung主要由tsung_controller和tsung两个应用共同完成压力测试,其中tsung_controller主要负责配置文件的解析和服务监控;tsung主要负责压力的产生,并完成与服务器的通信。

Tsung运作的大概流程:

1. 启动tsung_controller应用,初始化相关进程,然后由ts_config_server进程完成配置文件的解析

2. 根据配置需要启动对服务器的监控数据的统计,日志的记录等

3. 根据配置在不同节点上的erlang虚拟机进程,启动tsung应用,然后由ts_launcher进程和ts_launcher_static进程开始产生压力,这两个进程会不断创建出ts_client进程,最终在ts_client进程中模拟用户的行为完成与服务器的通信。

tsung安装:

Tsung运行环境安装

检查安装一下依赖包,以免在安装的时候报错.(操作系统的软件包完全安装时,这些包通常都会装进去,所有也可以跳过,此步骤,后面遇到问题时,少哪包再装哪个包,逐个解决。)

rpm -qa build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel

每个包系统盘或者镜像中都有。

安装 erlang、gnuplot、perl5

erlang :因为Tsung是基于erlang开发的,所以得先安装这个环境.安装软件

perl5:生成报表的脚本支持环境

gnuplot:报表统计图片生成工具

1、  安装erlang

tsung基于erlang,必须先安装运行环境

下载地址:http://www.erlang.org/downloads

其他系统可以直接命令安装:

  • For Homebrew on OS X: brew install erlang
  • For MacPorts on OS X: port install erlang
  • For Ubuntu and Debian: apt-get install erlang
  • For Fedora: yum install erlang
  • For FreeBSD: pkg install erlang

安装命令:

cd /usr/local/

mkdir -p erlang

wget http://www.erlang.org/download/otp_src_20.0.tar.gz

tar -zxvf otp_src_20.0.tar.gz

cd otp_src_20.0/

./configure --prefix=/usr/local/erlang

make

make install

安装完成输入/usr/local/erlang/bin/erl验证安装是否成功

如果执行./configure --prefix=/usr/local/erlang时报错:

则执行yum install -y ncurses-devel

然后再执行./configure --prefix=/usr/local/erlang

设置环境变量以便下一步安装Tsung时使用

[root@tester~]#export PATH=$PATH:/usr/local/erlang/bin/

验证erlang是否安装成功

[root@tester~]#erl

 

显示下面样子结果说明安装成功:

 

2、  安装tsung

下载地址:http://tsung.erlang-projects.org/

cd /usr/local/

mkdir -p tsung

wget http://tsung.erlang-projects.org/dist/tsung-1.6.0.tar.gz

tar -zxvf tsung-1.6.0.tar.gz

cd tsung-1.6.0/

./configure --prefix=/usr/local/tsung --with-erlang=/usr/local/erlang

make

make install

安装完成运行:/usr/local/tsung/bin/tsung –h 校验是否安装成功

3、  安装gnuplot 和 perl5

生产图表报告,支持tsung_stats.pl

命令查看显示perl 当前版本信息。

[root@tester~]#perl –v

l  perl5 安装报告需要用到

https://www.perl.org/get.html

centos自动安装

l  gnuplot 图形库

yum install -y gnuplot gd libpng zlib

查看看gnuplot版本

l  报告模板:

http://template-toolkit.org/download/index.html

cd /usr/local/

wget http://cpan.org/modules/by-module/Template/Template-Toolkit-2.26.tar.gz

tar -zxvf Template-Toolkit-2.26.tar.gz

cd Template-Toolkit-2.26/

perl Makefile.PL

make

make test

make install

  

如果生产Makefile时,报错:

解决办法:

yum install –y perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

然后重新执行 perl Makefile.PL

4、  安装 python 和 matplotlib

图表对比,支持tsung-plotter

系统自带python

安装matplotlib

pip install matplotlib

如果没有安装pip,执行以下操作:

yum install python-pip

没有python-pip包就执行命令

yum -y install epel-release

执行成功之后,再次执行

yum install python-pip 

对安装好的pip进行升级

 pip install --upgrade pip

安装好pip,再执行

pip install matplotlib

以上就把需要基本包都安装完了!

注意:如果需要使用PostgreSQL、mysql、LDAP等模块还需安装相应的插件

5、  配置环境变量

修改/etc/profile文件使其永久性生效,并对所有系统用户生效

export PATH=$PATH:$JAVA_HOME/bin:/usr/local/erlang/bin:/usr/local/tsung/bin:$PATH

另外在文件末尾增加ulimit –n 65536,设置文件句柄数,后文将详细介绍。

最后:执行 命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功

tsung 学习的更多相关文章

  1. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  7. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  8. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  9. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

随机推荐

  1. 单端通用ISM频段接收器 Si4313

    Si4313芯片是单端通用ISM频段接收器,工作频率为240-960MHz,可编程接收频率带宽为2.6-260kHz,接收灵敏度为-118dBm,数据速率为0.2-128kb/s,采用FSK.GFSK ...

  2. AX5511 Boost Converter

    GENERAL DESCRIPTION    The AX5511 is a current mode step up converter intended for small, low powera ...

  3. 我的sourceinsight的配置

    下面是我的sourceinsight的配置,点击下面的链接,下载*.em文件,将他们添加到Base工程,设置相应的快捷键即可,或者导入下载的配置文件. http://pan.baidu.com/s/1 ...

  4. 微信公众平台—— 获取微信服务器IP地址

    微信公众平台—— 获取微信服务器IP地址 const ServerIpUrl = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?&acces ...

  5. Java自定义Exception

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  6. 【java】弃用System.out.println(),迎接log

    展示性能差异: 1.System.out.println()输出 package com.sxd.swapping.test; import org.junit.Test; public class ...

  7. Go:《Go语言 云动力》

    背景 中秋快速的读了一遍<Go语言 云动力>,对Go有一下几点感觉: 在静态类型和动态类型之间取得了非常好的平衡,隐式接口实现会被后续的语言借鉴(希望C#能借鉴一下). 缺乏异常处理机制, ...

  8. Flink 靠什么征服饿了么工程师?

    Flink 靠什么征服饿了么工程师? 2018-08-13    易伟平 阿里妹导读:本文将为大家展示饿了么大数据平台在实时计算方面所做的工作,以及计算引擎的演变之路,你可以借此了解Storm.Spa ...

  9. ActiveMQ使用示例之Topic

    非持久的Topic消息示例  对于非持久的Topic消息的发送基本跟前面发送队列信息是一样的,只是把创建Destination的地方,由创建队列替换成创建Topic,例如: Destination d ...

  10. 创建一个简单的windows服务,每间隔一定时间重复执行批处理文件

    创建一个windows服务项目,增加App.config <?xml version="1.0" encoding="utf-8" ?> <c ...