tsung小白手册

执行压测任务:

tsung -f test.xml start

将压测结果复制到web目录方便查看:

sh report.sh   /root/.tsung/log/20220804-1834

#/bin/bash

cd $1

idata=`echo $1 |awk -F '/' '{print $5}'`

tsung_stats

grep error $1/*.dump

rm -fr *.dump *.log

mv $1 /data/httpd/tsung/

cd /root/.tsung/

echo ""

echo "http://yourdomain.com/tsung/"$idata"/graph.html#http_status"

tsung出现错误 error_inet_etimedout: 原因可能是目标机器无法连接,也有可能是压测机器的出口带宽不足。出现这种错误建议更换一台压测机器再试试。或者将目标机器的域名更换成ip,从内网ip压测。

压到服务器上限后,数据库可能会锁表。这时候需要重启php-fpm。

tsung配置文件解析:

loglevel: 日志记录的等级,支持的设置有 error / debug等,一般设置成error即可。

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

    <clients>

        <client host="localhost" use_controller_vm="true" maxusers="120000"/>

maxusers: 指压测机器最大可以模拟的用户数量。

    </clients>

    <servers>

        <server host="baidu.com" port="80" type="tcp"/>

host: 目标机器。可以是ip地址或者域名。注意不要写http前缀。

port: 端口,一般是80 或者 443。如果有特殊端口也可以指定。

type:一般是tcp。如果是https协议,这里写 ssl。

    </servers>

    <load>

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

duration:压测周期长度。配合后面的unit来指定压测时间。

unit: 压测周期的单位。minute 分钟。second 秒。

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

arrivalrate:压测的最大并发请求数。

        </arrivalphase>

    </load>

    <options>

        <option name="file_server" id="auth_file"  value="token.csv"/>

这里可以从文件中加载一些压测参数。

    </options>

    <sessions>

        <session name="login" probability="5" type="ts_http">

压测比例:probability, 百分比。所有session的比例加起来必须等于100。

            <setdynvars sourcetype="file" fileid="auth_file" delimiter=";" order="iter">

                <var name="authorization" />

从文件中加载压测参数,并赋值给 authorization

            </setdynvars>

            <transaction name="login">

                <request subst="true">

subst:设置成true,表示下面的目标压测地址里存在替换变量。

                    <http url="/api/h5app/wxapp/enterprises?page=1&amp;pageSize=20&amp;company_id=1" version="1.1" method="GET">

url: 目标压测地址。这里如果是以http开头,则忽略上面指定的 host。否则会自动拼接 host。注意,网址里如果包含&,要替换成 &amp;

                        <http_header name="Authorization" value="%%_authorization%%"/>

引用变量:红色部分为变量名,%%_authorization%%

                        <http_header name="Accept-Encoding" value="gzip,deflate"/>

                    </http>

                </request> 

                <request subst="true">

                    <http url="/api/h5app/wxapp/employee/auth" contents="enterprise_id=2&amp;mobile=member_mobile&amp;showError=false&amp;company_id=1" version="1.1" method="POST" content_type='application/x-www-form-urlencoded; charset=UTF-8'>

这里是发起post请求,参数放在contents里,需要指定 content_type。

                        <http_header name="Authorization" value="%%_authorization%%"/>

                    </http>

                </request>       

            </transaction>

        </session>

 

有话要说