← Назад к вопросам

С помощью какой команды можно замерить пропускную способность между клиент-серверами

2.0 Middle🔥 151 комментариев
#Сети и протоколы

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Измерение пропускной способности сети: инструменты и подходы

Как DevOps-инженер с более чем 10-летним опытом, я часто сталкиваюсь с необходимостью диагностики производительности сети. Пропускная способность (throughput) — критически важный метрика, особенно при развертывании распределенных систем, миграции в облако или настройке кластеров. Единой «волшебной» команды не существует, но есть набор проверенных инструментов, выбор которых зависит от контекста: нужен ли разовый замер, постоянный мониторинг, тестирование в контролируемой среде или диагностика в production.

Основные инструменты и команды

1. iperf3 / iperf — эталонный инструмент для контролируемого тестирования

Это специализированный инструмент, созданный именно для измерения максимальной пропускной способности TCP/UDP. Он работает в клиент-серверном режиме, что исключает влияние дискового ввода-вывода и других факторов.

Базовый сценарий использования:

  1. На сервере (принимающая сторона) запускаем демон для прослушивания:

    # Запуск сервера на порту 5201 (по умолчанию)
    iperf3 -s
    
    # Или в режиме демона (для фоновой работы)
    iperf3 -s -D
    
  2. На клиенте запускаем тест, например, на 10 секунд:

    # Измерение пропускной способности до сервера 192.168.1.100
    iperf3 -c 192.168.1.100 -t 10
    
    # Более продвинутый тест: параллельные потоки, реверсный режим (сервер отправляет)
    iperf3 -c 192.168.1.100 -t 30 -P 4 -R
    
    **Ключевые параметры:**
    * `-c <host>` — указание сервера.
    * `-t <seconds>` — длительность теста.
    * `-P <num>` — количество параллельных потоков (позволяет "нагрузить" широкие каналы).
    * `-R` — реверсный режим (сервер отправляет, клиент принимает) для измерения bandwidth в обратную сторону.
    * `-u -b <bandwidth>` — для тестирования UDP (например, `-u -b 1G`).

Преимущество iperf3: Он измеряет именно пропускную способность канала, а не скорость скачивания файла, и дает детальную статистику по потерям пакетов (для UDP) и джиттеру.

2. Простые утилиты для быстрой проверки

Для экспресс-оценки иногда можно использовать встроенные инструменты, хотя они менее точны, так как зависят от многих переменных (диск, удаленный сервер и т.д.).

  • scp или rsync с замером времени: Можно скопировать большой тестовый файл и рассчитать скорость по времени.

    # Создаем тестовый файл (например, 100 МБ)
    dd if=/dev/zero of=testfile.bin bs=100M count=1
    
    # Копируем и смотрим на примерную скорость в выводе
    scp testfile.bin user@remote-server:/tmp/
    # Анализ скорости будет в выводе команды или рассчитывается вручную
    
  • curl с загрузкой/отправкой данных: Полезно для тестирования HTTP-пропускной способности.

    # Загрузка файла с измерением скорости (используйте большой файл с тестового сервера)
    curl -o /dev/null -w "Speed: %{speed_download} bytes/sec\n" http://speedtest.example.com/1gbfile.bin
    
    # Отправка данных (например, через POST)
    dd if=/dev/zero bs=1M count=100 | curl -X POST --data-binary @- http://remote-server/upload --output /dev/null -w "Upload Speed: %{speed_upload} bytes/sec\n"
    

3. Инструменты для постоянного мониторинга и продвинутой диагностики

В инфраструктуре как код (IaC) и CI/CD пайплайнах мы часто интегрируем более сложные системы:

  • nload, iftop, bmon: Показывают текущую загрузку интерфейса в реальном времени, хороши для визуальной оценки.
    # Установка и запуск (пример для nload)
    sudo apt install nload  # Для Debian/Ubuntu
    nload eth0
    
  • Сетевые мониторинги (Prometheus + node_exporter + Grafana): node_exporter собирает метрики сетевых интерфейсов, которые затем визуализируются в Grafana для анализа трендов.
  • Облачные инструменты: AWS CloudWatch Network Metrics, Google Cloud Operations Suite, Azure Network Watcher предоставляют встроенные метрики пропускной способности для своих сервисов.

Критические рекомендации для точного замера

  1. Устраните "бутылочные горлышки" (bottlenecks): Убедитесь, что нагрузка на CPU и дисковую подсистему на обоих концах минимальна. iperf для этого идеален, так как почти не нагружает диски.
  2. Тестируйте в обоих направлениях: Пропускная способность может быть асимметричной (например, разная скорость загрузки и отдачи).
  3. Используйте параллельные потоки: Современные сети и протоколы (TCP windows scaling) могут полностью раскрыться только при нескольких одновременных соединениях. Параметр -P в iperf3 решает эту задачу.
  4. Учитывайте настройки TCP: Размер TCP Window (-w в iperf3) критически важен для высокоскоростных каналов с большой задержкой (High Bandwidth-Delay Product networks).
  5. Проводите тесты несколько раз и в разное время: Для нивелирования влияния фонового сетевого трафика.
  6. Изолируйте проблему: Если скорость низкая, проверьте промежуточные узлы (traceroute, mtr), наличие фаерволов, ограничивающих полосу (tc), или QoS-политики.

Заключение

Для точного и целенаправленного замера пропускной способности между клиентом и сервером команда iperf3 является отраслевым стандартом и моим основным инструментом. Для быстрой прикидки подойдут scp или curl. Для постоянного наблюдения за сетевой инфраструктурой необходимо внедрять системы мониторинга на основе Prometheus и визуализации в Grafana, которые дают исторический контекст и помогают выявлять аномалии. Правильный выбор инструмента и методологии так же важен, как и интерпретация полученных результатов в контексте конкретной архитектуры вашего приложения.