Tsung распределенное нагрузочное тестирование выдает внутреннюю ошибку сервера - PullRequest
0 голосов
/ 26 декабря 2018

Я запускаю тест распределенной нагрузки для брокера сообщений mqtt, используя tsung.Я настроил узлы с помощью ключей shh и проверил, что между узлами происходит правильное выполнение shh, а с одним клиентом тест успешно выполняется, но когда я запускаю файл tsung.xml с двумя узлами, я сталкиваюсь с внутренней ошибкой сервера.

Я проверил версии и пути erlang и tsung, установленных в обоих узлах.Они имеют те же самые версии и пути даже.

<clients>
    <client host="1.2.3.4" cpu="1" maxusers="300"/>
    <client host="2.3.4.6" cpu="1" maxusers="100"/>
</clients>
<servers>
    <server host="1.2.3.4" port="1883" type="tcp" />
</servers>

, когда я запускаю tsung для отчетов в 1.2.3.4:8091

Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator unknown@unknown, and inform them of the time the error occurred and anything you might have done that may have caused the error.

И tsung_controller@1.2.3.4.log говорит

ts_config_server:(0:<0.158.0>) Can't start newbeam on host '2.3.4.6' (reason: timeout) ! Aborting!

Есть ли у них какая-либо причина для этой проблемы или решение того, как решить эту ошибку?

1 Ответ

0 голосов
/ 03 января 2019

Вы не написали, какую операционную систему вы используете.Я предполагаю, что вы используете Linux.Я легко воспроизвел ошибку (я просто удалил строку ssh-key из файла ~ / .ssh / authorized_keys другого узла).

Я описываю свой опыт (Debian для Linux):

  • Вам необходимо правильно установить Tsung на каждом узле.Я имею в виду, что вы должны иметь возможность запустить Tsung из вашего домашнего каталога.
  • Должно быть работающее соединение ssh-key между узлами (конечно, без пароля).Важный!Когда вы используете Tsung с пользователем root, ваш узел будет использовать пользователя root для подключения к другому узлу.
  • Мои узлы работают только с зарегистрированным именем хоста
  • Требования ядра Linuxнекоторые твик

У меня есть скрипт установки Debian для Tsung 1.6 :

wget http://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
yes | sudo apt-get update
yes | sudo apt-get install elixir esl-erlang build-essential git gnuplot libtemplate-perl
wget http://tsung.erlang-projects.org/dist/tsung-1.6.0.tar.gz
tar -xvf tsung-1.6.0.tar.gz
cd tsung-1.6.0/
./configure
make
sudo make install
cd ..

аутентификация по ssh-ключу : https://debian -administration.org / article / 530 / SSH_with_authentication_key_instead_of_password

Скопируйте эти строки в конец файла / etc / hosts на каждом узле.

1.2.3.4    n1
2.3.4.6    n2

Ваша конфигурация должна быть такой:

<clients>
    <client host="**n1**" cpu="1" maxusers="300"/>
    <client host="**n2**" cpu="1" maxusers="100"/>
</clients>
<servers>
    <server host="1.2.3.4" port="1883" type="tcp" />
</servers>

Вот как я запускаю :

tsung -k -f tsung.xml start

Я использую этот скрипт твик в Linux:

# Increase system file descriptor limit
sudo sysctl -w fs.file-max=300000

# Discourage Linux from swapping idle processes to disk (default = 60)
# vm.swappiness = 10

# Increase Linux autotuning TCP buffer limits
# Set max to 16MB for 1GE and 32M (33554432) or 54M (56623104) for 10GE
# Don't set tcp_mem itself! Let the kernel scale it based on RAM.
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.core.rmem_default=16777216
sudo sysctl -w net.core.wmem_default=16777216
sudo sysctl -w net.core.optmem_max=40960
sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 16777216'
sudo sysctl -w net.ipv4.tcp_wmem='4096 65536 16777216'

# Make room for more TIME_WAIT sockets due to more clients,
# and allow them to be reused if we run out of sockets
# Also increase the max packet backlog
sudo sysctl net.core.netdev_max_backlog=50000
sudo sysctl net.ipv4.tcp_max_syn_backlog=30000
sudo sysctl net.ipv4.tcp_max_tw_buckets=2000000
sudo sysctl net.ipv4.tcp_tw_reuse=1
sudo sysctl net.ipv4.tcp_fin_timeout=10

# Disable TCP slow start on idle connections
sudo sysctl net.ipv4.tcp_slow_start_after_idle=0

# Disable source routing and redirects
sudo sysctl net.ipv4.conf.all.send_redirects=0
sudo sysctl net.ipv4.conf.all.accept_redirects=0
sudo sysctl net.ipv4.conf.all.accept_source_route=0

# Log packets with impossible addresses for security
sudo sysctl net.ipv4.conf.all.log_martians=1
...