В настоящее время я занимаюсь распределенным нагрузочным тестированием сервисов Amazon EC2 и старательно следил за всей документацией/форумом/поддержкой о том, как заставить все работать, но, к сожалению, застрял на этом этапе. Никто из соответствующих IRC также не смог ответить на этот вопрос...
Вот что я вижу:
Я нахожусь в точке, когда я могу заставить Tsung работать отлично, если я запущу его просто на самом контроллере, но с опциями:
FROM tsung.xml
<client host="tester0" weight="8" maxusers="10000" cpu="4"/>
Кроме того, он работает с более высокими / более низкими значениями ЦП.
Я также могу очень легко заставить его работать локально, используя:
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, когда я пытаюсь выполнить slave: start, но я не получаю никаких результатов. Я сделал это, запустив:
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