tsung 学习
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 安装报告需要用到
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 学习的更多相关文章
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Unity3d学习 制作地形
这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
随机推荐
- linux下使用crontab创建定时任务
在linux中启动crontab服务: /etc/init.d/crond start crontab的命令格式 crontab -l 显示当前的crontab 文件(默认编写的crontab文件会保 ...
- TF卡翻盖式卡座
- FIS3使用官方例子流程
fis3 的常用例子:https://github.com/fex-team/fis3-demo git链接可在页面中获取替换下面的git链接: 例子准备: git clone https://git ...
- DotNet和DotNet Core
EF 1.0 ---EF6.0 都是code firstmodel ,model model first model,database first model, EF7 是DOTNET CORE重框版 ...
- Eclipse NDK 配置,不用安装Cygwin
一.关于NDK:NDK全称:Native Development Kit.1.NDK是一系列工具的集合.NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用 ...
- MySQL round函数
在mysql中,round函数用于数据的四舍五入,它有两种形式: 1.round(x,d) ,x指要处理的数,d是指保留几位小数 这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整 ...
- Shell学习:grep, sed, awk命令的练习题
http://www.cnblogs.com/chengmo/archive/2013/01/17/2865479.html 文件:datafileSteve Blenheim:238-923-736 ...
- hadoop中InputFormat 接口的设计与实现
InputFormat 主要用于描述输入数据的格式, 它提供以下两个功能.❑数据切分:按照某个策略将输入数据切分成若干个 split, 以便确定 Map Task 个数以及对应的 split.❑为 M ...
- Java import javax.servlet 出错
Error: The import javax.servlet cannot be resolved The import javax.servlet.http.HttpServletRequest ...
- 根据WSDL文件生成代理类
D:\Program Files\Microsoft Visual Studio 10.0\VC>wsdl /l:c# /n:cmsserver /out:E:\ospsoft\Trave ...