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. HTTP协议返回状态码说明

    http://1632004.blog.163.com/blog/static/29991497201231811231120/ 如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户 ...

  2. GNU 是什么?

    https://www.gnu.org/ GNU 是什么? GNU is a Unix-like operating system that is free software—it respects ...

  3. JAVA-数据类型、变量、常量

    http://blog.csdn.net/yuhailong626/article/details/7245571 http://www.cnblogs.com/JackieADBM/p/534222 ...

  4. java反射机制简单介绍

    1.字节码.所谓的字节码就是当java虚拟机载入某个类的对象时,首先须要将硬盘中该类的源码编译成class文件的二进制代码(字节码),然后将class文件的字节码载入到内存中,之后再创建该类的对象 2 ...

  5. TortoiseSVN解决冲突

    解决冲突Resolving Conflicts有时候,你从仓库更新文件时会发生一些冲突.当两个或更多开发人员对同一个文件的某几行做 了修改,就会产生冲突.因为Subversion对你的项目一无所知,他 ...

  6. 记一次压力测试和对nginx/tomcat配置的调整

    原文地址:还没找到 是一个web系统,前端使用nginx做为反向代理,处理https,并将请求转发给后端的tomcat服务. 压力测试工具选择了jmeter. 首先简单介绍一下jmeter. 它是ap ...

  7. PHP闭包--匿名函数

    匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数.最经常用作回调函数(callback)参数的值.当然,也有其它应用的情况. ...

  8. [翻译] POP Facebook的动画开源库

    Pop is an extensible animation engine for iOS and OS X. In addition to basic static animations, it s ...

  9. Android onConfigurationChanged 不执行

    自从Android 3.2(API 13),screen size也开始跟着设备的横竖切换而改变. 所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetS ...

  10. 角摩网发布在线制作Epub、Mobi格式的电子书

    原来cn的域名没有及时续约被人用了,现在用www.joymo.cc开始新的电子书制作之路. 目前支持Epub和Mobi格式,会陆续加入PDF和APK的电子书.