Швидко завантажити великий файл і потім відчувати кожен клік повільним — це не суперечність. Пропускна здатність каже, скільки може пройти за секунду; час туди й назад каже, скільки триває обмін, перш ніж станеться щось корисне. Покращення першого нічого не дає другому, а друге — це те, що людина помічає під час набору, клікання чи розмови. Вимірюйте скаргу, а не з'єднання.

Швидкий файл, повільний клік: два різні числа

Масове передавання постійно тримає дані в русі, тож може повідомляти здорову швидкість навіть тоді, коли кожен окремий запит чекає. Багато тестів відкривають і кілька з'єднань одразу, що підвищує підсумкову цифру, поки один запит лишається повільним. Обидва результати сумісні, а цитування більшого користувачеві, який скаржиться на затримку, — це шлях до втрати довіри.

Завантаження сторінки — це ланцюг невеликих обмінів: розв'язання імен, встановлення з'єднання, запит, відповідь, а потім залежні запити. Кожен крок знову платить за шлях туди й назад, тому маршрут із великою затримкою здається повільним, навіть коли пропускної здатності вдосталь.

Тунель додає власний шлях і обробку, і маршрут важливіший за напис на карті. Два виходи в одній країні можуть мати дуже різні шляхи до однієї мети. Різниці у двадцять мілісекунд достатньо, щоб змінити відчуття сторінки, хоча цифру пропускної здатності вона майже не рухає. Тому вибір виходу має йти за вибіркою затримки, а не за іконкою прапора.

Вимірюйте скаргу, а не з'єднання

Оберіть вимірювання, що відповідає фразі, яку сказав користувач. Повільному завантаженню потрібна стала швидкість у правильному напрямку; виклику, що заїкається, потрібна власна статистика цього застосунку; сторінці, яка повільно стартує, потрібні часи розв'язання імен і встановлення.

ping -c 20 10.60.0.5
curl -sS -o /dev/null -w 'ttfb=%{time_starttransfer} rate=%{speed_download}\n' https://files.plant.example/1gb.bin
iperf3 -c 10.60.0.5 -t 10 -P 4

Перша команда дає вибірку часу туди й назад до хоста, що відповідає передбачувано, друга повідомляє час до першого байта й сталу швидкість одного з'єднання, а третя вимірює сумарну пропускну здатність чотирма паралельними потоками. Запускайте їх до того самого призначення в той самий час доби, бо порівняння ранкової вибірки з вечірньою дає історію, а не вимірювання.

Тримайте призначення незмінним, коли порівнюєте виходи. Зміна і сервера, і тунелю перетворює одну змінну на дві, і результат не може сказати, що саме мало значення. Запускайте кожен вихід щонайменше тричі, бо одинична вибірка часто потрапляє на зміну маршрутизації або галасливу хвилину. Медіана корисніша за найкращий випадок.

Ставтеся до ICMP як до підказки, а не до відповіді. Хост, що відповідає, може обробляти ехо-запити іншим шляхом, ніж той, який використовує ваш застосунок, і одна втрачена відповідь не є доказом, що кожен застосунок втрачає пакети.

Затримка під навантаженням — це проблема черги

Найбільше збиває людей візерунок, коли з'єднання здається добрим у простої й непридатним під час резервного копіювання. Це черга, а не пропускна здатність. Насичений висхідний канал будує буфер перед кожним іншим пакетом, тож натискання клавіші чекає за частиною вивантаження.

ping -c 20 10.60.0.5 &
iperf3 -c 10.60.0.5 -t 20 -R -b 20M

Перша команда знімає вибірки затримки у фоні, поки друга насичує зворотний напрямок. Якщо часи ping під час передавання стрибають і потім відновлюються, ви відтворили bufferbloat, а не виявили несправність маршрутизації. Виправлення зазвичай — налаштування керування чергою, нижча фонова швидкість або перенесення масового передавання з інтерактивного шляху.

Зменшення необов'язкового фонового трафіку часто допомагає більше, ніж зміна країни виходу. Це також дешевше, оборотне й перевіряється за хвилину. Плануйте великі вивантаження поза робочим часом, якщо чергою не можна керувати, і обмежуйте їхню швидкість, якщо вони мусять працювати вдень. Налаштування керування чергою — краще виправлення, коли маршрутизатор його підтримує.

Змініть одну річ і порівнюйте подібне з подібним

За великої затримки в простої порівнюйте виходи, тримаючи призначення незмінним, потім порівняйте маршрути для найкращого кандидата. За низької сталої пропускної здатності дивіться натомість на ємність, навантаження сервера й обробку клієнта, бо це різні межі.

Запишіть, що ви вимірювали, проти якого призначення, о котрій годині й з якими налаштуваннями. Порівняння без цих чотирьох фактів неможливо повторити, і наступна людина почне з нуля.

Потім узгодьте інструмент із твердженням у заявці. "Повільний інтернет" — не вимірювання; "перший байт тривав 900 ms до цього хоста, при цьому пропускна здатність була гаразд" — вимірювання, і воно вказує прямо на затримку, а не на пропускну здатність.

Схожі статті