我目前正在对 Amazon 的 EC2 服务进行分布式负载测试,并且一直在努力遵循所有文档/论坛/支持,以了解如何使事情正常进行,但不幸的是,我发现自己被困在了这一点上。任何相关的 IRC 中都没有人能够回答这个问题......
这是我所看到的:
如果我只是在控制器本身上运行它,我可以让 Tsung 完美地工作,但有以下选项:
FROM tsung.xml
<client host="tester0" weight="8" maxusers="10000" cpu="4"/>
此外 - 它适用于更高/更低的 CPU 值。
我也可以很容易地使用它在本地工作:
use_controller_vm="true"
但这现在对我没有用,因为我无法获得我想要的吞吐量。
为了让事情正常进行,我安装了 ssh 密钥。我已经打开了这些服务器上的所有端口 [0 - 65535],并且拥有完全相同版本的 Tsung、Erlang,而且服务器上的所有内容实际上都是相同的(它们是彼此的图像)。
Tsung 版本 1.4.2 Erlang R15B01 Ubuntu 12.04LTS 相同的 EC2 安全组(所有端口都打开 - TCP 和 UPD 且没有 iptables 或 SELinux)相同的 EC2 可用区
当我确实启动 tsung 时,仅当按上述方式发送到 tester0 并且 ts_config_server 使用以下命令启动 newbeam 时,它才能工作:
ts_config_server:(6:<0.84.0>) starting newbeam on host tester0 with Args " -rsh ssh -detached -setcookie tsung -smp disable +A 16 +P 250000 -kernel inet_dist_listen_min 64000 -kernel inet_dist_listen_max 65500 -boot /usr/lib/erlang//lib/tsung-1.4.2/priv/tsung -boot_var TSUNGPATH /usr/lib/erlang/ -pa /usr/lib/erlang//lib/tsung-1.4.2/ebin -pa /usr/lib/erlang//lib/tsung_controller-1.4.2/ebin +K true -tsung debug_level 7 -tsung log_file ts_encoded_47home_47ubuntu_47_46tsung_47log_4720120719_451751"
但是,每当我尝试使用任何远程服务器运行它时,整个测试都会失败并且我得到零用户:
<client host="tester1" weight="8" maxusers="10000" cpu="1"/>
ts_config_server:(6:<0.84.0>) starting newbeam on host tester1 with Args " -rsh ssh -detached -setcookie tsung -smp disable +A 16 +P 250000 -kernel inet_dist_listen_min 64000 -kernel inet_dist_listen_max 65500 -boot /usr/lib/erlang//lib/tsung-1.4.2/priv/tsung -boot_var TSUNGPATH /usr/lib/erlang/ -pa /usr/lib/erlang//lib/tsung-1.4.2/ebin -pa /usr/lib/erlang//lib/tsung_controller-1.4.2/ebin +K true -tsung debug_level 7 -tsung log_file ts_encoded_47home_47ubuntu_47_46tsung_47log_4720120719_451924"
但是,当我尝试使用两个客户端运行它时(即,如下所示):
<client host="tester0" weight="8" maxusers="10000" cpu="1"/>
<client host="tester1" weight="8" maxusers="10000" cpu="1"/>
我再次让零用户开始访问我的网络服务器。我不知道为什么,这对我来说根本不直观。
ts_config_server:(6:<0.84.0>) starting newbeam on host tester1 with Args " -rsh ssh -detached -setcookie tsung -smp disable +A 16 +P 250000 -kernel inet_dist_listen_min 64000 -kernel inet_dist_listen_max 65500 -boot /usr/lib/erlang//lib/tsung-1.4.2/priv/tsung -boot_var TSUNGPATH /usr/lib/erlang/ -pa /usr/lib/erlang//lib/tsung-1.4.2/ebin -pa /usr/lib/erlang//lib/tsung_controller-1.4.2/ebin +K true -tsung debug_level 7 -tsung log_file ts_encoded_47home_47ubuntu_47_46tsung_47log_4720120719_451751"
ts_config_server:(6:<0.85.0>) starting newbeam on host tester0 with Args " -rsh ssh -detached -setcookie tsung -smp disable +A 16 +P 250000 -kernel inet_dist_listen_min 64000 -kernel inet_dist_listen_max 65500 -boot /usr/lib/erlang//lib/tsung-1.4.2/priv/tsung -boot_var TSUNGPATH /usr/lib/erlang/ -pa /usr/lib/erlang//lib/tsung-1.4.2/ebin -pa /usr/lib/erlang//lib/tsung_controller-1.4.2/ebin +K true -tsung debug_level 7 -tsung log_file ts_encoded_47home_47ubuntu_47_46tsung_47log_4720120719_451751"
我确实注意到的一件事是,在传递给 slave:start 的所有参数中,只有一个不存在,即 -boot 指令后面的那个:
/usr/lib/erlang//lib/tsung-1.4.2/priv/tsung
相反,在该目录中,我只有以下文件:
:~$ ls /usr/lib/erlang//lib/tsung-1.4.2/priv
tsung.boot tsung_controller.rel tsung_recorder.boot tsung_recorder.script
tsung_controller.boot tsung_controller.script tsung_recorder_load.boot tsung.rel
tsung_controller_load.boot tsung_load.boot tsung_recorder_load.script tsung.script
tsung_controller_load.script tsung_load.script tsung_recorder.rel
我实际上尝试的最后一件事是记录我尝试从属时发生的 ssh 会话:启动,但我没有得到任何结果。我通过运行来做到这一点:
erl -rsh ssh -sname tsung -r ssh_log_me
ssh_log_me 在哪里:
#!/bin/sh
echo "$0" "$@" > /tmp/my-ssh.log
ssh -v "$@" 2>&1 | tee -a /tmp/my-ssh.log
但是我运行时没有输出:
(tsung@tester0)1> slave:start_link(tester1, tsung, " -rsh ssh -detached -setcookie tsung -smp disable +A 16 +P 250000 -kernel inet_dist_listen_min 64000 -kernel inet_dist_listen_max 65500 -boot /usr/lib/erlang//lib/tsung-1.4.2/priv/tsung -boot_var TSUNGPATH /usr/lib/erlang/ -pa /usr/lib/erlang//lib/tsung-1.4.2/ebin -pa /usr/lib/erlang//lib/tsung_controller-1.4.2/ebin +K true -tsung debug_level 7 -tsung log_file ts_encoded_47home_47ubuntu_47_46tsung_47log_4720120719_451751").
{error,timeout}
我查看了 erlang 的 -boot 指令和实际的 erlang 代码(用于 ts_config_server),但此时我有点迷茫,可能只是遗漏了最后一条信息。
我请你看看我的 xml 文件:http: //pastebin.com/2MEbL6gd