tsung

tsung

tsung是指开源的多协议分布式负载测试工具,根据erlang语言开发。一个开源的多协议分布式负载测试工具,使用erlang语言开发的。

tsung是指开源的多协议分布式负载测试工具,根据erlang语言开发。

介绍

一个开源的多协议分布式负载测试工具,使用erlang语言开发的。

作用

它能用来压力测试HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和 Jabber/XMPP的服务器。它可以分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。

用法

下面的描述以HTTP压力测试为例。

准备知识

了解ssh的key认证机制。

单“客户机”压测

“小型”的压力测试一般不需要很多tsung客户机,一台tsung就可以打出很大的压力,因为tsung使用了epoll技术,在一个进程中,就可以管理上万级别的socket(注意ulimit -n的限制),相对于其它压力测试工具(比如webbench)使用多线程,在打出相同压力的情况下,tsung对客户机资源的消耗要小得多得多。另外,tsung又可以多进程,使用系统的SMP特性,相比于ab这样的工具(ab也是使用epoll技术,但是ab只能单进程——需要手动启动多个来达到多进程的目的,多进程才可以充分使用CPU的多核),可以更充分地利用客户机的硬件资源。

单客户机压测,架构最简单。其Clients端如下配置:

<clients>

<client host="bj-tsung1" use_controller_vm="true"/>

</clients>

执行时,将配置文件复制到bj-tsung1,然后在bj-tsung1上执行“启动压测”命令:

tsung -f tsung.xml start

“客户机”集群压测

当一台压测机,不能满足压力需求;或者为了更逼真地模似真实压力时,可台使用“tsung客户机集群“来打压务。

假如我们有bj-tsung[1-4] 4台tsung客户机(安装了相同erlang、tsung版本的机器),Clients段配置如下:

<clients>

<client host="bj-tsung1"maxusers="800" cpu='8'/>

<client host="bj-tsung2"maxusers="800" cpu='8'/>

<client host="bj-tsung3"maxusers="800" cpu='8'/>

<client host="bj-tsung4"maxusers="800" cpu='8'/>

</clients>

注意,执时启动命令时,要在一台能ssh登录bj-tsung[1-4]这4台机器,而且不需要输入密码的机器上执行。

比如我有一台bj-login1,这台机器登录bj-tsung[1-4]不需要密码(使用key认证),我就可以在bj-login1上执行启动压测命令:

tsung -f tsung.xml start

这时,可以看到bj-tsung[1-4]上启动了很多erl进程,就是tsung客户机在执行了。

HTTP测试常见问题

我遇到的两个问题是:

如何自定义http的"Host"头儿,以避免使用/etc/hosts文件。

如何让tsung使用”压缩“方式接收数据。

上面两个问题的解法如下:

1.

如何自定义http的"Host"头儿,以避免使用/etc/hosts文件。

2.

如何让tsung使用”压缩“方式接收数据。

上面两个问题的解法如下:

<request>

<http url="/" method="GET" version="1.1">

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

<http_header name="Host" value="domainname"/>

</http>

</request>

广告位:底部(ad-bottom)—— 请到中台「公共区块」编辑此内容