Почему двунаправленный iperf-запрос зависает на стороне сервера?
1983
Eldros
Чтобы диагностировать разницу в сетевом трафике между двумя местоположениями и нашим главным серверным центром, я использую iperf для регистрации скорости трафика с помощью следующей команды:
iperf -c <server ip> -F 500MB_Test_File.zip -n 500M -y C
После того, как я заметил различия между скоростью загрузки и загрузки, я захотел использовать эту -dопцию и наткнулся на странное поведение: хотя передача происходила в направлении клиента к серверу, в другом направлении она зависала и, похоже, не зависала. Вот тест, который я сделал, который показывает, что он не связан с тем, что я использую файл в качестве источника для передачи данных:
Я использую iperf 2.0.5. Как клиенты, так и сервер являются компьютерами Linux, а сервер является виртуальным.
РЕДАКТИРОВАТЬ
После выполнения MariusMatutiae предложения «S я начал сервер Iperf на клиентской машине, а затем попытался сделать двунаправленный запрос от VM, и вот что у меня получился:
Я думал, отлично, команда останавливается сама по себе, но я получаю результаты только в одном направлении. До тех пор, пока я не посмотрел на машину, где я запустил сервер iPerf на этот раз, и увидел это:
$ iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local <client_ip> port 5001 connected with <server_ip> port 40179 ------------------------------------------------------------ Client connecting to <server_ip>, TCP port 5001 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 6] local <client_ip> port 36243 connected with <server_ip> port 5001 [ ID] Interval Transfer Bandwidth [ 6] 0.0-10.0 sec 45.4 MBytes 38.0 Mbits/sec [ 4] 0.0-10.2 sec 64.2 MBytes 52.8 Mbits/sec
Это заставило меня задуматься о том, что, возможно, мне нужно запустить сервер в качестве демона по обе стороны соединения, чтобы двунаправленная команда работала, и действительно, я получил аналогичные результаты, только выводя производительность на одной стороне транзакции, но как таковую У меня нет никакого способа получить данные о производительности с другой стороны: я запустил демон iperf, -D > iperflogно журнал, похоже, не заполнен ...
Предполагается ли так, что iperf должен работать на обеих машинах для выполнения двунаправленного запроса? bind failed: Address already in useПолучает ли сообщение, которое я получаю, когда запускаю клиент iperf и сервер, работающий с обеих сторон, подсказку о том, где может лежать проблема? У меня такое ощущение, что то, что я делаю, не должно быть стандартной процедурой ...
Что произойдет, если вы используете хост вместо гостевой виртуальной машины в качестве другого конца соединения?
MariusMatutiae 8 лет назад
0
Вы имеете в виду использование виртуальной машины в качестве клиента iperf и бывшего клиента в качестве сервера? Я должен попробовать, я вернусь к вам.
Eldros 8 лет назад
0
@MariusMatutiae попробовал это и добавил некоторую информацию
Eldros 8 лет назад
0
Сообщение об ошибке `` сбой привязки: адрес уже используется` "означает, что вы не можете запустить клиент и сервер на одном компьютере. Правильный способ использования - запустить сервер на одном компьютере и клиент на другом компьютере с параметром `-d` (без параметра` -d` для сервера). Вы сказали, что один сервер является виртуальным: другой компьютер является хостом виртуального сервера?
MariusMatutiae 8 лет назад
0
@MariusMatutiae: хосты находятся в разных местах, так как мы хотим проверить трафик между некоторыми из ваших сайтов и нашим главным серверным центром. Но, как я уже упоминал в моем последнем редактировании, проблема, похоже, связана с тем, что сервер запущен как демон, который изначально не был интуитивно понятным ...
Eldros 8 лет назад
0
1 ответ на вопрос
0
Eldros
Как я и подозревал, Мариус подтвердил, что клиент и сервер не могут работать на одной машине. Поэтому я ждал подходящего времени, чтобы убить демона, чтобы он не работал одновременно с клиентом, запустил сервер только -sна хосте (который находится в совершенно другом месте, как и спросил Мариус), запустил двунаправленный запрос на В.М. и запрос прошел (Мысль момента: «Что за ...»).
А потом до меня дошло, проблема возникает только в том случае, если сервер запущен как демон.
Я подтвердил свою гипотезу, протестировав сервер как демон, а не демон, а также поменялся ролями машин.
Сводка: если вы хотите использовать двунаправленные запросы, не запускайте сервер как демон.
Я понял, что вместо того, чтобы пытаться заставить сервер работать как демон, большинство пользователей в моей ситуации, вероятно, будут довольны наличием работающего сервера и выполнением его без опции `-D`, поэтому я удалил содержание вопроса и сделал это ответ.
Eldros 8 лет назад
0