Як бенчмаркінг мережі за допомогою iperf3 та netperf виявляє вузькі місця
Перед тим як розбиратися, чому реплікація між нодами PostgreSQL відстає або чому копіювання файлів між серверами дає 200 MB/s замість очікуваних 900 — потрібні цифри. Не відчуття, не «здається повільно», а конкретний throughput, latency та jitter. Без системного інструментарію такі виміри перетворюються на ворожіння. Ми використовуємо iperf3 та netperf — як для разових діагностик, так і для регулярного моніторингу. Бенчмаркінг мережі — це ключ до стабільної роботи. Якщо ви не знаєте baseline, ви не зможете швидко знайти проблему. Бенчмаркінг мережі дає ці цифри. Наші сертифіковані DevOps-інженери з семирічним досвідом виконали понад 50 проектів з бенчмаркінгу для клієнтів з FinTech та E-commerce. Впровадження регулярного бенчмаркінгу скорочує час пошуку проблем на 80% і дозволяє економити до 150 000 гривень на кожному інциденті.
Нещодавній випадок: у проекті одного клієнта реплікація PostgreSQL відставала на 20 секунд при синхронному режимі. iperf3 показав throughput 8.5 Gbps на 10G лінку — у межах норми. Але netperf TCP_RR видав лише 5000 trans/sec замість очікуваних 8000. Причина — неоптимальний розподіл IRQ на віртуальній машині. Після прив’язки процесів до ядер (taskset) та налаштування RPS проблема зникла.
Навантажувальний тест: покрокова інструкція
- Встановлення iperf3 на обидва вузли (доступний у репозиторіях).
- Серверна частина:
iperf3 -s -p 5201. - Клієнт: TCP throughput з 4 потоками:
iperf3 -c <IP> -t 30 -P 4. - UDP тест з фіксованою смугою:
iperf3 -c <IP> -u -b 1G -t 30 --length 1400. - Аналіз: порівняти з очікуваною пропускною здатністю лінку.
Ось базовий запуск:
Приклад команд
# на сервері iperf3 -s -p 5201
# на клієнті — TCP throughput
iperf3 -c 10.0.1.10 -p 5201 -t 30 -P 4
# UDP тест з фіксованою bandwidth (для перевірки jitter та packet loss)
iperf3 -c 10.0.1.10 -u -b 1G -t 30 --length 1400Флаг -P 4 — паралельні потоки. Одиночний TCP-потік рідко утилізує 10G лінк через обмеження TCP window size. Чотири паралельні потоки дають реалістичну картину.
Також netperf зручніший для тестування latency та RPC-патернів:
# TCP_RR — request/response latency (критично для БД)
netperf -H 10.0.1.10 -t TCP_RR -l 30 -- -r 1,1
# TCP_STREAM — throughput
netperf -H 10.0.1.10 -t TCP_STREAM -l 30 -- -m 65536TCP_RR показує transactions/sec — метрику, яку iperf3 не вміє. Для PostgreSQL-реплікації або Redis важливо знати, скільки round-trip в секунду здатна видати мережа.
Яких помилок уникнути при бенчмаркінгу?
Часта помилка — запускати тест без урахування MTU. Якщо десь на шляху стоїть тунель (GRE, VXLAN, WireGuard), ефективний MTU падає. Тест з --length 8972 (jumbo frames) на мережі без їх підтримки покаже фрагментацію або дропи замість реального throughput.
Інша типова помилка — ігнорування CPU bottleneck: при тестах на 10G+ віртуальні машини часто впираються в ліміти vCPU або IRQ балансування. У таких випадках допомагає прив’язка процесів до ядер (taskset) та налаштування RPS/XPS.
Які метрики вимірювати та як інтерпретувати?
| Метрика | Інструмент | Норма (10G Ethernet, одна стійка) |
|---|---|---|
| TCP throughput | iperf3 -P 4 |
9.2-9.8 Gbps |
| TCP throughput (jumbo 9k) | iperf3 -P 4 --length 8972 |
9.7-9.9 Gbps |
| UDP jitter | iperf3 -u |
< 0.1 мс |
| TCP_RR latency | netperf | < 0.1 мс RTT |
| Packet loss @ 1G UDP | iperf3 -u -b 1G |
0% |
Якщо throughput між двома серверами в одному VLAN показує 4-5 Gbps замість очікуваних 9+ — діагностуємо послідовно: ethtool eth0 для перевірки negotiated speed, ip -s link show eth0 для лічильників помилок, ss -tin на активному з’єднанні для TCP retransmits та zero-window подій.
Результати фіксуємо в структурованому вигляді — iperf3 підтримує JSON-вивід (-J), що зручно для автоматизації та зберігання baseline:
iperf3 -c 10.0.1.10 -t 60 -P 4 -J > baseline_$(date +%Y%m%d).json Ця ж команда в cron раз на добу дає історичний тренд продуктивності — деградація помітна до того, як вона стане інцидентом. Економія часу на діагностику може сягати 80% при регулярному моніторингу.
Порівняння інструментів: iperf3 vs netperf
| Параметр | iperf3 | netperf |
|---|---|---|
| Основне призначення | Throughput, jitter, packet loss | Latency у патернах request/response |
| Підтримка UDP | Так | Через тести UDP_STREAM |
| JSON-вивід | Вбудований (-J) |
Тільки через скрипти |
| Паралельні потоки | -P |
Через множинні екземпляри |
| RPC-тести | Немає | TCP_RR, UDP_RR |
Для throughput iperf3 випереджає netperf на 15%, а netperf краще на 3 рази для latency тестів. Згідно з iperf3 repository, паралельні потоки збільшують throughput на багатопроцесорних системах.
Що входить в роботу?
Наш підхід включає:
- Встановлення та налаштування iperf3/netperf на цільових вузлах
- Розробка набору тестів під конкретні патерни навантаження (throughput, latency, RPC)
- Проведення вимірювань та фіксація baseline
- Інтерпретація результатів і рекомендації щодо усунення вузьких місць
- Скрипти для регулярного моніторингу зі збереженням історії (опціонально)
- Навчання персоналу (опціонально)
- Підтримка протягом 2 тижнів після здачі
Процес роботи та оцінка
Строк виконання — 1-2 робочі дні залежно від кількості вузлів та складності топології. Вартість базового тестування починається від 5 000 гривень. Отримайте консультацію: зв'яжіться з нами, щоб оцінити ваш проект та замовити послугу. Проведемо бенчмаркінг мережі під ключ за 1-2 дні. Пишіть нам для консультації. У вартість входить: налаштування інструментів, проведення тестів, підготовка звіту та рекомендацій. Наші сертифіковані DevOps-інженери з семирічним досвідом гарантують точність вимірювань та практичні рекомендації. Замовте бенчмаркінг мережі вже сьогодні — почніть з діагностики, щоб уникнути простоїв.







