Диагностика

«Нода медленная»: сервер, канал или путь — разбор по шагам

Один поток против четырёх, mtr из региона пользователей и balloon-модуль. Как отличить оверселл хостера от платы за расстояние.

8 мин чтения

Задача

Пользователи на одной локации жалуются на скорость — например 2–3 МБ/с на разных устройствах. Надо понять, кто виноват: сам сервер, провайдер ноды или путь до неё (расстояние, кривой backhaul аплинка). Без этого разделения исправляют не то: крутят конфигурацию, когда виноват маршрут, или наоборот. Алгоритм — несколько замеров с ноды по SSH.

Шаг 1. Сервер-сайд здоров?

sysctl net.ipv4.tcp_congestion_control net.core.default_qdisc   # ждём bbr + fq
ethtool eth0 | grep -i speed                                    # ширина NIC
tc qdisc show dev eth0                                          # нет ли rate-limit (htb/tbf)
uptime; free -h

Шаг 2. Канал наружу: один поток против многих

Ключевая развилка:

curl -o /dev/null -s -w "%{speed_download} B/s\n" --max-time 25 http://<test-mirror>/100mb.test
for i in 1 2 3 4; do curl -o /dev/null -s -w "поток$i: %{speed_download}\n" --max-time 20 http://<test-mirror>/100mb.test & done; wait

Шаг 3. Путь до ноды — главный виновник далёких локаций

Замер с узла в регионе пользователей:

ssh root@<узел-в-регионе> 'ping -c4 -q <адрес-целевой-ноды>'
ssh root@<узел-в-регионе> 'mtr -rwc 5 <адрес-целевой-ноды>'   # где теряется, через какие страны идёт backhaul

Одиночный Reality-поток по каналу с RTT около 140 мс физически даёт 15–25 Мбит, то есть 2–3 МБ/с. Конфигурацией не лечится, это плата за расстояние.

Имена хопов в mtr выдают географию. «Близкая» локация может тормозить из-за кривого backhaul: если трафик идёт крюком через третью страну (видно по hostname хопов) — это плюс 60–70 мс. Такое — сетевая претензия хостеру (поднять прямой пиринг), которую он способен устранить. «В первый день было быстро, потом упало» — почти всегда деградация маршрута аплинка, а не сервер.

Шаг 4. Память «занята», а процессов нет — оверселл виртуалки

free -h
ps -eo rss --no-headers | awk '{s+=$1} END{print s/1024" MB"}'   # сумма RSS
lsmod | grep -i balloon                                          # vmw_balloon / virtio_balloon

Если used сильно больше суммы процессов, slab и cache, а balloon-модуль загружен — гипервизор раздул balloon и отжал RAM под соседей. Это маркер оверселла хоста: вероятно, оверселлят и CPU с сетью в пик. Кандидат на смену хостера.

Подводные камни

Вывод. Скорость ноды разбирается по шагам: congestion/NIC/qdisc (сервер), один против N потоков (потолок канала), mtr из региона пользователей (путь и backhaul), balloon (оверселл виртуалки). Далёкий путь и кривой backhaul конфигурацией не лечатся: первое требует убрать локацию из скоростного балансира, второе — тикета хостеру. Balloon — сигнал к миграции.

Как подключиться за 2 минуты
Частые вопросы

Частые вопросы

Как понять, кто виноват в медленной скорости: сервер, канал или путь?
Разбирать по шагам: здоровье сервера (congestion control, NIC, qdisc), один поток против четырёх (потолок канала), mtr из региона пользователей (путь и backhaul), balloon-модуль (оверселл виртуалки).
Как отличить нормальный лимит одного потока от жёсткого потолка провайдера?
Если один поток даёт скорость N, а четыре параллельных — около 4×N, жёсткого потолка нет. Если сумма не растёт при нескольких потоках, это оверселл канала.
Почему далёкая локация физически даёт всего 2-3 МБ/с?
Одиночный Reality-поток при RTT около 140 мс физически ограничен 15-25 Мбит — это плата за расстояние, конфигурацией она не лечится.
Как понять, что «близкая» локация тормозит из-за кривого маршрута?
По именам хопов в mtr: если трафик идёт крюком через третью страну, это добавляет 60-70 мс, и нужно требовать у хостера прямой пиринг.
Что говорит о том, что хостер переселлил виртуалку?
Если used в free -h намного больше суммы RSS процессов, slab и cache, а загружен balloon-модуль — гипервизор отжал RAM под соседей, это маркер оверселла и повод сменить хостера.
Похожее

Ещё в базе знаний

Подключите рабочий VPN

Инструкции базы знаний написаны под ключи VPN PRO: ключ выдаёт Telegram-бот за минуту, работоспособность гарантируем. Промокод VPN10 — 10 дней бесплатно, без карты.

Промокод VPN10 — 10 дней бесплатно · до 31 августа · передавайте друзьям