1.tsung
一款用erlang编写的开源压测工具,可用来压测多种不同类型的服务器。其主要通过配置不同的测试脚本(xml)来编写测试的业务场景。
2.背景
由于工作中要研究ejabberd的代码,希望使用其强大的并发处理能力。在分析其接受连接请求的并发性能,从而选定了tsung作为压测工具。同时,ejabberd也是一款用erlang开发的xmpp通讯服务器,代码值得研究一下。
同时,也想看看如果用erlang来开发web server,从而从网上找来mochiweb这个开源erlang web开发库,就也简单写了个tsung测试脚本来压测了一下。
3. 步骤
1)安装erlang /otp开发包
2)下载ejabberd源码安装包 、mochiweb源码安装包、tsung源码安装包
3)分别编译安装以上三个安装包(具体安装步骤主要参阅网上教程,或等我比较空闲时再根据各网友的博客以及自己的实践整理出来一份文档,这篇主章主要是tsung的测试脚本)
3.用例
1)xmpp
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/local/tsung/share/tsung/tsung-1.0.dtd">
<tsung loglevel="warning" version="1.0">
<clients>
<client host="localhost" use_controller_vm="true" maxusers="40000" />
</clients>
<servers>
<server host="10.120.105.240" port="8080" type="tcp"></server>
</servers>
<load>
<arrivalphase phase="1" duration="600" unit="second">
<users maxnumber="40000" interarrival="0.002" unit="second"></users>
<!-- <users arrivalrate="100" unit="second"></users> -->
</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='userdb' value="/home/imuser/.tsung/userdb.csv"/>
</options>
<sessions>
<session name="http-example" probability="100" type="ts_http">
<setdynvars sourcetype="file" fileid="userdb" delimiter=";" order="iter">
<var name="loginname" />
</setdynvars>
<request subst='true'>
<!-- <http url="/hello?username=%%_loginname%%" method="GET" version="1.1"></http> -->
<http url="/test?username=%%_loginname%%" method="GET" version="1.1"></http>
</request>
</session>
</sessions>
</tsung>