先来测一个静态网页。html
这里能够算tsung的文档最坑的地方了。若是你照着官网上的入门指南一步一步作下来,我能够告诉你必定跑不通!理由是,tsung给出的工具tsung-recorder生成的配置文件不是完整的配置文件!! 若是你想入门,请忘了tsung-recorder,并严格按照如下步骤操做,不然后果就是各类运行时异常。程序员
~/.tsung/tsung.xml
内容以下:浏览器
<?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"> <tsung> <clients> <!-- 在这里添加测试主机(客户端) --> </clients> <servers> <!-- 在这里添加被测试的主机(服务端) --> </servers> <load> <!-- 在这里添加加载过程配置 --> </load> <sessions> <!-- 在这里添加会话(即一系列HTTP请求) --> </sessions> </tsung>
以上是tsung最小配置的骨架,里面的东西一个都不能少,并且必须按照这个顺序来配置!!(该死的官方文档,读的时候有一种只见树木不见森林的赶脚)。服务器
一个客户端(client)是一个系统进程(Erlang/Elixir程序员注意,是系统进程,不是BEAM进程。一个系统进程就是一个Erlang虚拟机)。cookie
<clients> <client host="localhost" cpu="4" maxusers="30000"/> </clients>
这里定义了一个客户端,它在localhost这台主机上开4个进程同时发送请求。最好把cpu
的值设得和该主机的CPU数量相等,过低没法彻底利用测试主机性能,过高则有一些并发问题。Tsung保证会把这些进程分配到不一样的CPU内核上。注意:即便客户端开在本机上,Tsung也会经过SSH远程开启进程,并且不会使用密码。因此请确保SSH配置为PublicKey验证,而且把localhost加进known_hosts。 若是实在不想用SSH开新进程,能够配成下面这样:session
<client host="localhost" use_controller_vm="true" maxusers="30000"/>
参数maxusers
设置了这个客户端最多可同时虚拟多少个用户,也就至关于并发量啦。注意,若是这个数值大于你的ulimit -Sn
,则tsung会开多个系统进程来确保这个数值。并发
服务端的配置相对简单:dom
<servers> <server host="localhost" port="80" type="tcp"/> </servers>
因为服务端(被测试)的应用能够是任何HTTP应用,因此没有Erlang进程的配置,熟悉HTTP的朋友应该一目了然了。tcp
Tsung有一个概念叫到达阶段(arrival phase),它有如下几个参数:工具
<load> <arrivalphase phase="1" duration="1" unit="minute"> <users arrivalrate="10000" unit="second"/> </arrivalphase> </load>
这里定义了一个用户到达阶段(arrival phase),这个阶段的总时长是1分钟,在这一分钟里,每秒钟会有1万个虚拟用户来访问。你能够添加更多阶段,在每一个阶段配置更多种用户到达模式。
所谓会话,就是每一个用户前后作哪些事情,对于HTTP的测试,固然就意味着发请求,收响应。Tsung对每一个会话会自动管理cookie。
<sessions> <session name="s1" type="ts_http"> <request> <http url="/" method="GET" version="1.1"/> </request> <thinktime min="2" max="10" random="true"> </session> </session>
在这个例子里,每一个用户的会话会作两件事:
/
,并接收响应至此,整个配置完成。下面是完整的配置文件(~/.tsung/tsung.xml
)的内容:
<?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"> <tsung> <clients> <client host="localhost" cpu="4" maxusers="30000"/> </clients> <servers> <server host="localhost" port="80" type="tcp"/> </servers> <load> <arrivalphase phase="1" duration="1" unit="minute"> <users arrivalrate="10000" unit="second"/> </arrivalphase> </load> <sessions> <session name="s1" type="ts_http" weight="1"> <request> <http url="/" method="GET" version="1.1"/> </request> <thinktime min="2" max="10" random="true"/> </session> </sessions> </tsung>
关于weight=1
这个配置,在单个session的状况下没有什么做用,可是仍是得配。若是你有多种session,则weight表示每一种session的相对比例,例如你有两种session,s1:weight=1
和s2:weight=2
,且一共有30000个用户,则其中10000个用的session种类是s1,20000个是s2。
若是想配成更高级的配置(例如随机请求参数、虚拟IP等)请参阅官方文档。
接下来就让咱们跑一下
$ tsung start
在跑的时候,咱们能够打开浏览器,访问http://localhost:8091/来查看摘要。不过说实话,这东西没啥用,由于等测试跑完了,这个tsung的内置服务器也就关了(你能够用tsung -k start
来阻止这个服务器自动关闭)。并且网页也不会实时更新,还得你手动刷。
注意看tsung命令行的提示信息,它会告诉你log出在什么位置,一般是~/.tsung/log/xxxx
。这个很重要,由于咱们立刻要进到这个目录下去生成图表!
首先cd
到上述的log位置,而后运行下列命令:
$ tsplot "Nginx" ./tsung.log -d .
这会在当前目录下生成一堆图表,有链接数、用户数、请求数等,并且每一个指标都有大小两张图。本身去看吧。若是你想把报告出到其余位置,只须要修改-d
后的参数就好了。
另外,若是想要一份完整的测试报告,能够cd
到log目录,运行
$ /usr/lib/tsung/bin/tsung_stat.pl