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. CentOS下使用KVM克隆虚拟机自动修改网卡的MAC地址

    克隆完虚拟机之后Mac地址还保留着母机的配置,此时需要修改成新的Mac地址才能继续,网上一般都是这样的手动操作: 参考:http://blog.51cto.com/freedyong/1361907 ...

  2. Inrush limiter also provides short-circuit protection

    For containing large amounts of bulk capacitance, controlling inrush currents poses problems. The si ...

  3. CMOS DACs act as digitally controlled voltage dividers

    Digital potentiometers, such as Analog Devices’ AD5160, make excellent digitally controlled voltage ...

  4. Go语言设计模式实践:迭代器(Iterator)

    关于本系列 决定开个新坑. 这个系列首先是关于Go语言实践的.在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档.图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只 ...

  5. 源码分析:动态分析 Linux 内核函数调用关系

    源码分析:动态分析 Linux 内核函数调用关系 时间 2015-04-22 23:56:07  泰晓科技 原文  http://www.tinylab.org/source-code-analysi ...

  6. 用css让一个容器水平垂直居中

    阅读目录 方法一:position加margin 方法二: diaplay:table-cell 方法三:position加 transform 方法四:flex;align-items: cente ...

  7. Java:使用 Java 开发的一个异常处理框架

    背景 这篇文章介绍的异常处理思路不错,本文试图给出一种具体实现,当然可能和作者的思路有所不同. 框架地址:https://github.com/happyframework/HappyFramewor ...

  8. [Lua]mac 上安装lua

    mac 安装lua google了好个看起来都不怎么好操作.这个是在命令行下操作的非常easy. curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz ...

  9. 用 Redis 实现分布式锁(分析)

    文章转自:http://www.jeffkit.info/2011/07/1000/ Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET ...

  10. 【GISER && Painter】矢量切片(Vector tile)番外一:Proj4js

    说明:番外篇是对正篇矢量切片(Vector tile)中提到的一些值得继续延伸的关注点继续进行探索和学习,所涉及的内容以解决实际问题为主要导向. 一.新的需求? 在完成了矢量切片的工作后,新的需求出现 ...