Tsung参数说明

2024-05-14 10:58
文章标签 参数 说明 tsung

本文主要是介绍Tsung参数说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Tsung参数说明

介绍

 

HTTP,WebDAV,SOAP,PostgreSQL,MySQL,LDAP和Tsung可以模拟上百万用户OS IP别名技术在单个机器上使用多(CPU,内存), 支持XML方式的配置文件

 

模拟真实的流量HTML或者图表的方式报告测试结果

 

下载程序包

 

下载   wget http://www.erlang.org/download/otp_src_R14B.tar.gz

 

下载   wget http://ncu.dl.sourceforge.net/project/gnuplot/gnuplot/4.4.2/gnuplot-4.4.2.tar.gz

 

下载   wget tsung压力工具1.3.1

 

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

 

注意:如果使用集群安装/root/

 

对上面下载的对应的./configure --with-readline=builtin)

 

如果在tsung,那么首先配置工具配置文件,将1个执行文件到tsung.xml,例如:

 

我们要模拟cp /root/tsung-1.3.3/examples/http_simple.xml ~/.tsung/tsung.xml

 

然后找到路径")格式添加 -->

 

<!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd" [

<!ENTITY sessions1 SYSTEM "/root/.tsung/notifications_send.xml">

<!ENTITY sessions2 SYSTEM "/root/.tsung/msg_statistics_new_count.xml">

<!ENTITY sessions3 SYSTEM "/root/.tsung/msg_statistics_view.xml">

<!ENTITY sessions4 SYSTEM "/root/.tsung/other_msgs_reset_count.xml">

] >

 

<!-- loglevel:工具写日志的标识,级别默认是"info",长时间运行建议调整为error -->

<!-- dumptraffic:运行的调试信息dump文件,如需要看脚本是否正确可以设置为"true",

                 级别默认是"false",长时间运行建议调整为false -->

<tsung loglevel="error" dumptraffic="false" version="1.0">

 

  <!-- 集群Client的设置 -->

  <clients>

<!-- host:填别名,需要先去host文件配置,如:

       127.0.0.1        localhost      

       10.0.0.252       s252      

       10.0.0.52        sl52

-->

  <!-- weight: 节点上面用户的比例,一般设置为1即可 -->

   <!-- maxusers: 一般设置为800,3000即可,根据机器配置来设置大小 -->

   <!-- cpu: 根据机器硬件配置来设置,如果是4核CPU,最佳设置为3,以此类推 -->

  <client host="localhost" weight="1" maxusers="3000" cpu="3"/>

  </clients>

 

  <!-- 集群servers的设置 -->

<servers>

  <!-- host: 填别名,需要先去host文件配置 -->

  <!-- port: 填可用对外端口,一般8080 -->

  <!-- type: 协议类型,tsung支持tcp/udp,根据自己的需要 -->

  <server host="localhost" port="8080" type="tcp"></server>

</servers>

 

  <!-- 监控(cpu, network, memory). 使用erlang或SNMP,erlang是默认值

       但是要保证监控的机器和server可以互相访问,装有erlang,否则用snmp -->

  <monitoring>

  <!-- host: 填别名,需要先去host文件配置 -->

    <monitor host="localhost" type="erlang"></monitor>

  </monitoring>

 

  <!-- 负载场景设置 -->

  <load>

  <!-- phase:阶段,填数字即可,系统会按顺序执行,可是设置多个阶段组合场景 -->

  <!-- duration:持续时段,填数字即可,单位是unit="minute"设置,是分钟

                 也可设置小时,天,详细情况参考API -->

  <!-- arrivalrate:虚拟用户数,填写数字即可,一般最大800,如过机器配置好,可自己调试最佳参数

       有效单位unit="second" 是秒,每秒虚拟300个虚拟用户,实际执行情况可能超过,也可能达不到,需要根据调试得到最佳参数 -->

   <arrivalphase phase="1" duration="1" unit="minute">

     <users arrivalrate="300" unit="second"></users>

   </arrivalphase>

  </load>

 

<!-- 脚本执行的基本参数设置 -->

  <options>

<!-- 从.CSV文件读取测试数据,id必须唯一,如需要从数据库读取测试数据,请参考API -->

<option name="file_server" id='userdb' value="/root/.tsung/test_userid.csv"/>

<option name="file_server" id='user' value="/root/.tsung/test_user.csv"/>

<!-- 设置用户请求的浏览器信息,probability为比重,总值为100 -->

   <option type="ts_http" name="user_agent">

    <user_agent probability="50">Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21</user_agent>

    <user_agent probability="50">Mozilla/5.0 (Windows; U; Windows NT 5.2; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4</user_agent>

   </option>

  </options>

 

  <!-- 测试脚本,session's的probabilities 参数总和必须为100,在每个-->

<sessions>

 &sessions1;

 &sessions2;

 &sessions3;

 &sessions4;

</sessions>

</tsung>

见附件xxxxx.xml文件,文档格式如下:

 

<!-- 测试脚本的设置 -->

<sessions>

<!-- name:脚本名称,唯一值 -->

<!-- probability:压力比重,总值100,可按需求设置 -->

<!-- type:这里根据测试对象来,我这里是http请求,其他类型参考API -->

<session name="msg_statistics" probability="100" type="ts_http">

 

<!-- 变量的设置 -->

<!-- sourcetype:根据需求,参考API,我这里是csv文件 -->

<!-- fileid:根据tsung.xml内的option文件操作的id一致 -->

<!-- order:我这里选择的random随机,根据需求参考API -->

<!-- name:这个变量的名称 -->

<setdynvars sourcetype="file" fileid="user" order="random">

<var name="userid" />

</setdynvars>

 

<!-- sourcetype:根据需求,参考API,我这里是csv文件 -->

<!-- fileid:根据tsung.xml内的option文件操作的id一致 -->

<!-- order:我这里选择的random随机,根据需求参考API -->

<!-- name:这个变量的名称 -->

<setdynvars sourcetype="file" fileid="userdb" order="random">

<var name="user" />

</setdynvars>

 

<!-- sourcetype:根据需求,参考API,random_number随机数字 -->

<!-- start:开始数字 -->

<!-- end:结束数字 -->

<!-- name:这个变量的名称 -->

<setdynvars sourcetype="random_number" start="1" end="40">

 <var name="rndint" />

</setdynvars>

 

<!-- repeat:定义一个循环,name:名称 -->

<repeat name="myloop">

<!-- transaction:定义一个事物,name:名称 -->

<transaction name="notifications_send">

<!-- request:定义一个请求,subst="true"是提交类型的请求 -->

<request subst="true">

<!-- http:定义一个http请求内容,根据自己的需求添加 -->

<http url='http://test.rest.msg.sdo.com:80/msg_statistics/%%_userid%%/new_count' content_type='application/json' method='GET' contents=''>

<http_header name="EncType" value="application/json"/>

<http_header name="Mode" value="HTML"/>

</http>

</request>

</transaction>

<!-- until:定义一个循环的出口条件,这个变量rndint永远不会为0,为了让虚拟用户不停循环 -->

<until var="rndint" eq="0"/>

</repeat>

 

</session>

</sessions>  

增加http请求脚本示例:

 

<session name="http_send" probability="100" type="ts_http">

 <setdynvars sourcetype="random_number" start="01" end="50">  

 <var name="rndint" />

  </setdynvars>

<for from="1" to="800000" var="i">

<transaction name="queryWalletBalance">

<request subst="true">

 

<http url="http://10.130.70.13:8089/mpay/queryWalletBalance.do" method="POST" version="1.1" contents="userId=deng0000%%_rndint%%&amp;userIdType=1&amp;spId=0&amp;appId=10&amp;businessCode=196&amp;costType=107&amp;queryMode=01&amp;eventTimestamp=20110304111111&amp;signMethod=1&amp;sign=32534535"> </http>

 

</request>

 

<thinktime value="0.1" random="true"></thinktime>

 

 

 

</transaction>

 

</for>

 

</session>

 

在<load>标签

 

duration:持续时段,填数字即可,单位是API

 

800,如过机器配置好,可自己调试最佳参数,有效单位300个虚拟用户,实际执行情况可能超过,也可能达不到,需要根据调试得到最佳参数

 

<!-- 负载场景设置 -->

<load>

<!--   第1阶段,持续10分钟,每秒2个用户 -->

<arrivalphase phase="1" duration="10" unit="minute">

<users interarrival="2" unit="second"></users>

</arrivalphase>

<!--   第2阶段,持续10分钟,每秒1个用户 -->

<arrivalphase phase="2" duration="10" unit="minute">

<users interarrival="1" unit="second"></users>

</arrivalphase>

<!--   第3阶段,持续10分钟,每秒10个用户 -->

<arrivalphase phase="3" duration="10" unit="minute">

<users interarrival="0.1" unit="second"></users>

</arrivalphase>

<!--   第4阶段,持续10分钟,每秒10个用户 -->

<arrivalphase phase="4" duration="10" unit="minute">

<users arrivalrate="10" unit="second"></users>

</arrivalphase>

</load>

 

这篇关于Tsung参数说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988557

相关文章

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Maven中的profiles使用及说明

《Maven中的profiles使用及说明》:本文主要介绍Maven中的profiles使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录主要用途定义 Profiles示例:多环境配置激活 Profiles示例:资源过滤示例:依赖管理总结Maven 中的

Before和BeforeClass的区别及说明

《Before和BeforeClass的区别及说明》:本文主要介绍Before和BeforeClass的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Before和BeforeClass的区别一个简单的例子当运行这个测试类时总结Before和Befor

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL