<?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd"[ <!ENTITY ecstore SYSTEM "/root/.tsung/ecstore.xml"> ]> <!-- loglevel:工具写日志的标识,级别默认是"info",长时间运行建议调整为error --> <!-- dumptraffic:运行的调试信息dump文件,如需要看脚本是否正确可以设置为"true",级别默认是"false",长时间运行建议调整为false --> <tsung loglevel="notice" version="1.0"> <!-- Client side setup --> <!-- 集群Client设置 --> <!-- host必须是主机名,不能是IP地址 --> <!-- weight: 节点上面用户的比例,一般设置为1即可 --> <!-- maxusers: 一般设置为800,3000即可,根据机器配置来设置大小 超过这个数目 会自动开启更多的节点--> <!-- cpu: 根据机器硬件配置来设置,如果是4核CPU,最佳设置为3,以此类推 --> <clients> <client host="localhost" use_controller_vm="true"></client> </clients> <!-- Server side setup --> <!-- host: 填别名,需要先去host文件配置 --> <!-- port: 填可用对外端口,一般80 --> <!-- type: 协议类型,tsung支持tcp/udp,根据自己的需要 --> <!-- weight 设置权重,整数型 --> <servers> <server host="192.168.1.3" port="80" type="tcp"></server> </servers> <!-- 监控(cpu, network, memory). 使用erlang或SNMP,erlang是默认值 但是要保证监控的机器和server可以互相访问,装有erlang,否则用snmp --> <!-- 默认的snmp端口是161 默认的版本是v1 --> <monitoring> <monitor host="192.168.1.3" type="snmp"> <snmp version="v2" community="public" port="161"> <!-- 统计IO读,单位是blocks/s --> <oid name="io_sent" value=".1.3.6.1.4.1.2021.11.5.0" ></oid> <!-- 统计IO写,单位是blocks/s --> <oid name="io_receive" value=".1.3.6.1.4.1.2021.11.6.0" ></oid> </snmp> </monitor> </monitoring> <!-- 负载场景设置 --> <load> <!-- several arrival phases can be set: for each phase, you can set the mean inter-arrival time between new clients and the phase duration --> <!-- phase:阶段,填数字即可,系统会按顺序执行,可以设置多个阶段组合场景 --> <!-- duration:持续时段,填数字即可,单位是unit="minute"设置,是分钟 也可设置小时,天,详细情况参考API --> <!-- arrivalrate:虚拟用户数,填写数字即可,一般最大800,如过机器配置好,可自己调试最佳参数 有效单位unit="second" 是秒,每秒虚拟300个虚拟用户,实际执行情况可能超过,也可能达不到,需要根据调试得到最佳参数 --> <!-- interarrival: 时间间隔默认是2秒产生一个用户 这个选项可以和arrivalrate互相调换 --> <!-- maxnumber: 这个是设置最大用户数,所产生的总用户数不会超过这个 --> <arrivalphase phase="1" duration="10" unit="minute"> <users arrivalrate="50" unit="second"></users> </arrivalphase> <!-- 如果你想设置分时间阶段的会话可以这样,这个这里的session必须是录制的脚本或者自己添加的session --> <user session="session1" start_time="185" unit="second"></user> <user session="session2" start_time="10" unit="minute"></user> <user session="session3" start_time="11" unit="minute"></user> </load> <options> <option type="ts_http" name="user_agent"> <!-- 设置浏览器类型 probability为所占总的浏览器类别的百分比 --> <user_agent probability="80">Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21</user_agent> <user_agent probability="20">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> <!-- start a session for a http user. the probability is the frequency of this type os session. The sum of all session's probabilities must be 100 --> <sessions> <!-- 设置多个session weight 权重 --> <session name="session1" weight="2" type="ts_http"> <!-- 变量的设置需要在session中设置 --> <!-- 如果是引用外部的csv文件需要先设置fileid--> <options> <option name="file_server" id="user_list" value="users.csv"></option> </options> <!-- sourcetype:根据需求,参考API,我这里是csv文件 --> <!-- fileid:根据tsung.xml内的option文件操作的id一致 --> <!-- order:我这里选择的random随机,根据需求参考API --> <!-- delimiter: 设置分割符 也就是上边csv文件中存储的账号密码之间的连接符 --> <!-- name:这个变量的名称 --> <setdynvars sourcetype="file" fileid="user_list" order="random"> <var name="userid" ></var> </setdynvars> <!-- sourcetype:根据需求,参考API,我这里是csv文件 --> <!-- fileid:根据tsung.xml内的option文件操作的id一致 --> <!-- order:我这里选择的random随机,根据需求参考API --> <!-- name:这个变量的名称 --> <setdynvars sourcetype="file" fileid="userdb" order="random"> <var name="user" ></var> </setdynvars> <!-- sourcetype:根据需求,参考API,random_number随机数字 --> <!-- start:开始数字 --> <!-- end:结束数字 --> <!-- name:这个变量的名称 --> <setdynvars sourcetype="random_number" start="1" end="40"> <var name="rndint" ></var> </setdynvars> <!-- 在request中需要指定subst="true"来使用替换 --> <request subst="true"></request> <!-- 在手动指定的session中的某个请求中加入等待时间,也可以在录制的脚本中加入,下面是随机等待时间 --> <thinktime value='%%_rndthink%%' random='true'></thinktime> </session> <session name="session2" weight="1" type="ts_http"></session> <!-- 只有一个录制的session的时候可以这样调用 --> &ecstore; </sessions> </tsung>
<?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd"> <tsung loglevel="notice" version="1.0"> <!-- Client side setup --> <clients> <client host="localhost" use_controller_vm="true" maxusers="9999"/> </clients> <!-- Server side setup --> <servers> <server host="www.demo.com" port="80" type="tcp"></server> </servers> <!-- to start os monitoring (cpu, network, memory). Use an erlang agent on the remote machine or SNMP. erlang is the default --> <load> <!-- several arrival phases can be set: for each phase, you can set the mean inter-arrival time between new clients and the phase duration --> <arrivalphase phase="1" duration="120" unit="minute"> <users arrivalrate="15" unit="second"/> </arrivalphase> <arrivalphase phase="2" duration="120" unit="minute"> <users arrivalrate="20" unit="second"/> </arrivalphase> <arrivalphase phase="3" duration="120" unit="minute"> <users arrivalrate="25" unit="second"/> </arrivalphase> <arrivalphase phase="4" duration="120" unit="minute"> <users arrivalrate="30" unit="second"/> </arrivalphase> </load> <options> <option type="ts_http" name="user_agent"> <user_agent probability="80">Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21</user_agent> <user_agent probability="20">Mozilla/5.0 (Windows; U; Windows NT 5.2; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4</user_agent> </option> <option name="file_server" id="productname" value="/root/.tsung/productname.csv"/> <option name="file_server" id="productid" value="/root/.tsung/productid.csv"/> </options> <!-- start a session for a http user. the probability is the frequency of this type os session. The sum of all session's probabilities must be 100 --> <sessions> <session name='index' probability='20' type='ts_http'> <request> <http url='/index.php' version='1.1' method='GET'> <http_header name="Accept-Encoding" value="gzip,deflate"/> </http> </request> </session> <session name='search' probability='50' type='ts_http'> <setdynvars sourcetype="file" fileid="productname" delimiter=";" order="iter"> <var name="goods_name" /> </setdynvars> <request subst="true"> <http url='/index.php/gallery.html?scontent=%%_goods_name%%' version='1.1' method='GET'> <http_header name="Accept-Encoding" value="gzip,deflate"/> </http> </request> </session> <session name='product' probability='21' type='ts_http'> <setdynvars sourcetype="file" fileid="productid" delimiter=";" order="iter"> <var name="random_id" /> </setdynvars> <request subst="true"> <http url='/?product-%%_random_id%%.html' version='1.1' method='GET'> <http_header name="Accept-Encoding" value="gzip,deflate"/> </http> </request> </session> <session name='radom' probability='3' type='ts_http'> <request> <http url='/article-help-l-1.html' version='1.1' method='GET'> <http_header name="Accept-Encoding" value="gzip,deflate"/> </http> </request> </session> <session name='radom1' probability='3' type='ts_http'> <request> <http url='/article-news-55.html' version='1.1' method='GET'> <http_header name="Accept-Encoding" value="gzip,deflate"/> </http> </request> </session> <session name='radom2' probability='3' type='ts_http'> <request> <http url='/article-news-l-11.html' version='1.1' method='GET'> <http_header name="Accept-Encoding" value="gzip,deflate"/> </http> </request> </session> </sessions> </tsung>