Тест пропускной способности iperf3: TCP намного медленнее UDP

Тест пропускной способности iperf3: TCP намного медленнее UDP

Я пытаюсь выяснить, почему один из моих серверов, используемый для передачи файлов, отправляет файлы с очень низкой скоростью, около 7 Мбит/с, через nginx.

Я использовал iperf3 для проверки скорости передачи данных между серверами, оба на Debian 11.

  • FrenchServ:$ iperf3 -s
  • CanadianServ : $ iperf3 -c 195.154.xxx.xxx -P 1 -t 10 -b 1G// Попытки отправить, используя 1 соединение, за 10 сек, 1 ГБ данных

Этот тест по TCP дает следующие результаты:

Connecting to host 195.154.xxx.xxx, port 5201
[  5] local 142.44.xxx.xxx port 60610 connected to 195.154.xxx.xxx port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.04 MBytes  8.69 Mbits/sec    0    125 KBytes       
[  5]   1.00-2.00   sec   768 KBytes  6.29 Mbits/sec    0    125 KBytes       
[  5]   2.00-3.00   sec   768 KBytes  6.29 Mbits/sec    0    125 KBytes       
[  5]   3.00-4.00   sec   640 KBytes  5.24 Mbits/sec    0    125 KBytes       
[  5]   4.00-5.00   sec   768 KBytes  6.29 Mbits/sec    0    125 KBytes       
[  5]   5.00-6.00   sec   768 KBytes  6.29 Mbits/sec    0    125 KBytes       
[  5]   6.00-7.00   sec   768 KBytes  6.29 Mbits/sec    0    125 KBytes       
[  5]   7.00-8.00   sec   640 KBytes  5.24 Mbits/sec    0    125 KBytes       
[  5]   8.00-9.00   sec   768 KBytes  6.29 Mbits/sec    0    125 KBytes       
[  5]   9.00-10.00  sec   768 KBytes  6.29 Mbits/sec    0    125 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  7.54 MBytes  6.32 Mbits/sec    0             sender
[  5]   0.00-10.09  sec  7.08 MBytes  5.89 Mbits/sec                  receiver

iperf Done.

Он очень медленный, я могу объединить несколько подключений, чтобы увеличить пропускную способность, но хотелось бы оставить только одно подключение.

Сейчас идет тестирование по UDP.

  • КанадскийСерв :$ iperf3 -c 195.154.xxx.xxx -P 1 -t 10 -b 1G -u

Это выводит:

Connecting to host 195.154.xxx.xxx, port 5201
[  5] local 142.44.xxx.xxx port 37350 connected to 195.154.xxx.xxx port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   113 MBytes   950 Mbits/sec  81331  
[  5]   1.00-2.00   sec   114 MBytes   955 Mbits/sec  81773  
[  5]   2.00-3.00   sec   114 MBytes   956 Mbits/sec  81887  
[  5]   3.00-4.00   sec   114 MBytes   957 Mbits/sec  81904  
[  5]   4.00-5.00   sec   114 MBytes   956 Mbits/sec  81862  
[  5]   5.00-6.00   sec   114 MBytes   957 Mbits/sec  81913  
[  5]   6.00-7.00   sec   114 MBytes   957 Mbits/sec  81909  
[  5]   7.00-8.00   sec   114 MBytes   957 Mbits/sec  81915  
[  5]   8.00-9.00   sec   114 MBytes   956 Mbits/sec  81880  
[  5]   9.00-10.00  sec   114 MBytes   957 Mbits/sec  81904  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  1.11 GBytes   956 Mbits/sec  0.000 ms  0/818278 (0%)  sender
[  5]   0.00-10.41  sec   600 MBytes   484 Mbits/sec  0.029 ms  387089/818278 (47%)  receiver

iperf Done.

Фактическая пропускная способность UDP составляет около 500 Мбит/с, что вполне приемлемо, учитывая сетевые интерфейсы обоих серверов.

Как мне заставить TCP-передачу использовать большую пропускную способность?? Я пробовал на своем локальном компьютере, получаю около 30 Мбит/с при TCP-передачах.

решение1

Решение нашлось в конфигурации сервера, TCP Window был отключен, как рекомендовано для стандартной конфигурации Apache (описано здесь)

$ vi /etc/sysctl.conf

# Set this value and save
net.ipv4.tcp_window_scaling = 1

# check with
$ sysctl -p

Теперь нам нужно настроить значение окна TCP, как описано выше.здесьилиздесь.

Связанный контент