其实前边说了听过关于Tsung的安装配置使用,就是没有详细的解释过每个东西的配置选项和参数,下面就给出一个我自己整理的配置文件的说明,直接在上边标注的,不要嫌弃哦.
PS:这个文件是不能直接使用的.
001 | <? xml version = "1.0" ?> |
002 | <!DOCTYPE tsung SYSTEM "/usr/local/tsung/share/tsung/tsung-1.0.dtd"[ |
003 | <!ENTITY mysession1 SYSTEM "/root/.tsung/tsung_recorder20130716-0945.xml"> |
004 | ]> |
005 | <!-- loglevel:工具写日志的标识,级别默认是"info",长时间运行建议调整为error --> |
006 | <!-- dumptraffic:运行的调试信息dump文件,如需要看脚本是否正确可以设置为"true",级别默认是"false",长时间运行建议调整为false --> |
007 | < tsung loglevel = "notice" version = "1.0" > |
008 | |
009 | <!-- Client side setup --> |
010 | <!-- 集群Client设置 --> |
011 | <!-- host必须是主机名,不能是IP地址 --> |
012 | <!-- weight: 节点上面用户的比例,一般设置为1即可 --> |
013 | <!-- maxusers: 一般设置为800,3000即可,根据机器配置来设置大小 超过这个数目 |
014 | 会自动开启更多的节点--> |
015 | <!-- cpu: 根据机器硬件配置来设置,如果是4核CPU,最佳设置为3,以此类推 --> |
016 | |
017 | < clients > |
018 | < client host = "localhost" use_controller_vm = "true" /> |
019 | </ clients > |
020 | |
021 | <!-- Server side setup --> |
022 | <!-- host: 填别名,需要先去host文件配置 --> |
023 | <!-- port: 填可用对外端口,一般80 --> |
024 | <!-- type: 协议类型,tsung支持tcp/udp,根据自己的需要 --> |
025 | <!-- weight 设置权重,整数型 --> |
026 | < servers > |
027 | < server host = "192.168.1.3" port = "80" type = "tcp" ></ server > |
028 | </ servers > |
029 | |
030 | <!-- 监控(cpu, network, memory). 使用erlang或SNMP,erlang是默认值 |
031 | 但是要保证监控的机器和server可以互相访问,装有erlang,否则用snmp --> |
032 | <!-- 默认的snmp端口是161 默认的版本是v1 --> |
033 | < monitoring > |
034 | < monitor host = "192.168.1.3" type = "snmp" > |
035 | < snmp version = "v2" community = "public" port = "161" > |
036 | <!-- 统计IO读,单位是blocks/s --> |
037 | < oid name = "io_sent" value = ".1.3.6.1.4.1.2021.11.5.0" ></ oid > |
038 | <!-- 统计IO写,单位是blocks/s --> |
039 | < oid name = "io_receive" value = ".1.3.6.1.4.1.2021.11.6.0" ></ oid > |
040 | </ snmp > |
041 | </ monitor > |
042 | </ monitoring > |
043 | |
044 | <!-- 负载场景设置 --> |
045 | < load > |
046 | <!-- several arrival phases can be set: for each phase, you can set |
047 | the mean inter-arrival time between new clients and the phase |
048 | duration --> |
049 | <!-- phase:阶段,填数字即可,系统会按顺序执行,可以设置多个阶段组合场景 --> |
050 | <!-- duration:持续时段,填数字即可,单位是unit="minute"设置,是分钟 |
051 | 也可设置小时,天,详细情况参考API --> |
052 | <!-- arrivalrate:虚拟用户数,填写数字即可,一般最大800,如过机器配置好,可自己调试最佳参数 |
053 | 有效单位unit="second" 是秒,每秒虚拟300个虚拟用户,实际执行情况可能超过,也可能达不到,需要根据调试得到最佳参数 --> |
054 | <!-- interarrival: 时间间隔默认是2秒产生一个用户 这个选项可以和arrivalrate互相调换 --> |
055 | <!-- maxnumber: 这个是设置最大用户数,所产生的总用户数不会超过这个 --> |
056 | < arrivalphase phase = "1" duration = "10" unit = "minute" > |
057 | < users arrivalrate = "50" unit = "second" ></ users > |
058 | </ arrivalphase > |
059 | <!-- 如果你想设置分时间阶段的会话可以这样,这个这里的session必须是录制的脚本或者自己添加的session --> |
060 | < user session = "session1" start_time = "185" unit = "second" ></ user > |
061 | < user session = "session2" start_time = "10" unit = "minute" ></ user > |
062 | < user session = "session3" start_time = "11" unit = "minute" ></ user > |
063 | </ load > |
064 | |
065 | < options > |
066 | < option type = "ts_http" name = "user_agent" > |
067 | <!-- 设置浏览器类型 probability为所占总的浏览器类别的百分比 --> |
068 | < 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 > |
069 | < 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 > |
070 | </ option > |
071 | </ options > |
072 | |
073 | <!-- start a session for a http user. the probability is the |
074 | frequency of this type os session. The sum of all session's |
075 | probabilities must be 100 --> |
076 | |
077 | < sessions > |
078 | <!-- 设置多个session |
079 | weight 权重 --> |
080 | < session name = "session1" weight = "2" type = "ts_http" > |
081 | |
082 | <!-- 变量的设置需要在session中设置 --> |
083 | |
084 | <!-- 如果是引用外部的csv文件需要先设置fileid--> |
085 | < options > |
086 | < option name = "file_server" id = "user_list" value = "users.csv" /> |
087 | </ options > |
088 | <!-- sourcetype:根据需求,参考API,我这里是csv文件 --> |
089 | <!-- fileid:根据tsung.xml内的option文件操作的id一致 --> |
090 | <!-- order:我这里选择的random随机,根据需求参考API --> |
091 | <!-- delimiter: 设置分割符 也就是上边csv文件中存储的账号密码之间的连接符 --> |
092 | <!-- name:这个变量的名称 --> |
093 | < setdynvars sourcetype = "file" fileid = "user_list" order = "random" > |
094 | < var name = "userid" /> |
095 | </ setdynvars > |
096 | <!-- sourcetype:根据需求,参考API,我这里是csv文件 --> |
097 | <!-- fileid:根据tsung.xml内的option文件操作的id一致 --> |
098 | <!-- order:我这里选择的random随机,根据需求参考API --> |
099 | <!-- name:这个变量的名称 --> |
100 | < setdynvars sourcetype = "file" fileid = "userdb" order = "random" > |
101 | < var name = "user" /> |
102 | </ setdynvars > |
103 | <!-- sourcetype:根据需求,参考API,random_number随机数字 --> |
104 | <!-- start:开始数字 --> |
105 | <!-- end:结束数字 --> |
106 | <!-- name:这个变量的名称 --> |
107 | < setdynvars sourcetype = "random_number" start = "1" end = "40" > |
108 | < var name = "rndint" /> |
109 | </ setdynvars > |
110 | <!-- 在request中需要指定subst="true"来使用替换 --> |
111 | < request subst = "true" ></ request > |
112 | <!-- 在手动指定的session中的某个请求中加入等待时间,也可以在录制的脚本中加入,下面是随机等待时间 --> |
113 | < thinktime value = '%%_rndthink%%' random = 'true' ></ thinktime > |
114 | </ session > |
115 | < session name = "session2" weight = "1" type = "ts_http" ></ session > |
116 | <!-- 只有一个录制的session的时候可以这样调用 --> |
117 | &mysession1; |
118 | </ sessions > |
119 | </ tsung > |
我想只要你能够仔细的阅读这个配置文件,就能配置出属于自己的http压力测试的文件,一定要仔细阅读哦~
如果有什么问题可以在下边的评论中提出,我会第一时间回复的~ 大家一起交流学习….