Нидерланды, Франция, Латвия или Эстония - разберём, как выбрать по замеру пинга до вашей аудитории, а не наугад. И честно: для блога, бота и бэкапов страна почти не важна.
Вы решили взять VPS в Европе и застряли на выборе страны: Нидерланды, Франция, Латвия, Эстония - разница вроде бы есть, но какая именно? Короткий ответ на вопрос, как выбрать локацию для VPS: считать не по ощущениям и не по картинке на сайте хостинга, а по реальной задержке до вашей аудитории. Ещё более короткий: для блога, телеграм-бота, крон-задачи или хранилища бэкапов страна почти не важна - берите то, что дешевле и удобнее. Ниже разберём, когда задержка действительно решает, как померить её самому за пять минут и почему сервер «в соседней стране» иногда отвечает медленнее, чем сервер за полторы тысячи километров.
TL;DR. Задержка (RTT, round-trip time - время «туда и обратно») складывается из физики и маршрутизации. Физика: свет в оптоволокне идёт примерно 200 км за миллисекунду в одну сторону, то есть round trip набирает около 1 мс на каждые 100 км пути. Маршрутизация добавляет сверху ещё 30-100%. RTT из
ping- это уже почти весь сетевой вклад в ожидание ответа (запрос ушёл, ответ вернулся), а при новом соединении сверху ложатся TCP/TLS-рукопожатия. Меряйтеping,mtrиcurl -wсо стороны ваших пользователей до конкретной локации-кандидата и решайте по числам. Из четырёх локаций WeaselCloud для Западной и Центральной Европы обычно ближе Нидерланды или Франция, для Балтии и аудитории из СНГ - Латвия или Эстония, но это гипотеза для проверки, а не закон. Глобальная аудитория или сайт за CDN - локация источника влияет мало.
Что такое RTT и почему это не вся задержка
Задержка (латентность) - это время, за которое пакет данных доходит от точки А до точки Б. На практике вы почти всегда видите RTT (round-trip time) - время в оба конца: запрос ушёл на сервер, ответ вернулся. Именно это число показывает ping.
Половину RTT иногда используют как очень грубую оценку задержки в одну сторону: если ping = 40 мс и маршрут симметричный, то распространение сигнала в одну сторону - примерно 20 мс. Но пользователь нажимает кнопку не для того, чтобы пакет дошёл до сервера, - ему нужен ответ обратно. Для уже установленного соединения цепочка «клиент → сервер → обработка → клиент» по сети занимает уже близко к полному RTT, а не к половине. А если соединение надо ещё установить, добавляются TCP- и TLS-рукопожатия - это ещё несколько RTT сверху. HTTP/3, переиспользование соединения и TLS 1.3 сокращают эти рукопожатия, но принцип остаётся: сетевой вклад в отклик - это порядка целого RTT, плюс время обработки на сервере.
Практический вывод простой. RTT 40 мс для интерактивной работы - это комфортно, человек почти не замечает. RTT 250 мс уже ощущается как вязкость интерфейса. Ориентируйтесь на полное значение из ping, а не на его половину.
Откуда задержка берётся - две составляющие.
- Физика. Свет в стекле оптоволокна идёт примерно на треть медленнее, чем в вакууме - около 200 000 км/с. Это ~200 км за миллисекунду в одну сторону, значит round trip набирает примерно 1 мс на каждые 100 км расстояния. Чем дальше от вас сервер, тем больше это число, и сделать с этим нельзя ничего.
- Маршрутизация (роутинг) - путь, которым трафик реально идёт через промежуточные маршрутизаторы. Кабель редко проложен по прямой, на каждом узле пакет чуть задерживается, иногда трафик делает крюк через другой город. В сумме это множит физический минимум примерно в 1,3-2 раза.
Отсюда грубое правило. Возьмите расстояние по карте до вашей аудитории, поделите на 100 - получите нижнюю границу RTT в миллисекундах. Реальность будет в полтора-два раза выше. Ниже физического минимума не прыгнет никто: ни оптимизация, ни «премиум-хостинг».
Когда локация важна, а когда почти нет
Задержка влияет только там, где много мелких обменов «запрос-ответ» в реальном времени и где их ждёт живой человек или жёсткий таймаут. Всё остальное к десяткам миллисекунд безразлично.
Разница на практике. Интерактивная панель, где каждый клик - это round trip к серверу, при RTT 20 мс ощущается мгновенной, при 200 мс - тормозной. Онлайн-игра с синхронизацией позиций при 150 мс уже некомфортна. Со статическим блогом за CDN сложнее: если HTML и статика реально кэшируются на ближайшем к пользователю узле, читатель почти всё время получает страницу с него, и расположение вашего VPS-источника значит мало - разница между Амстердамом и Ригой обычно небольшая. Но HTML часто не кэшируют, бывает промах кэша, а запросы к API идут прямо на источник - тогда география источника снова влияет. Бэкап на удалённое хранилище: для больших объёмов обычно важнее пропускная способность, чем лишние десятки миллисекунд RTT, - хотя на быстром канале с одним TCP-потоком высокая задержка тоже способна ограничивать скорость через механику TCP (окно перегрузки). Телеграм-бот на long polling (бот сам периодически ходит за обновлениями и держит соединение открытым) переживает и 300 мс - обычно остаётся вполне рабочим, хотя несколько лишних сетевых обменов Telegram и бот могут сложиться в заметную долю секунды.
Отдельно про SEO. Низкий TTFB (time to first byte - время до первого байта) ускоряет загрузку страницы и влияет на пользовательские метрики, в том числе на LCP. Google использует Core Web Vitals и другие сигналы качества страницы, но разница в пару десятков миллисекунд RTT из-за страны VPS сама по себе заметного преимущества в выдаче не даёт. Куда важнее, чтобы сервер не был перегружен и отдавал страницу быстро. Если аудитория глобальная, CDN даёт больше, чем удачный выбор страны.
Как измерить задержку со стороны вашей аудитории
Ключевой момент: мерять надо от пользователей к серверу-кандидату, а не от своего ноутбука или от VPS к себе. Если ваши читатели в основном в Польше, а вы в Тбилиси - ваш личный ping не скажет ничего полезного. Варианты: заказать сервер-кандидат на месяц и померить, попросить пользователя или знакомого в нужном регионе прогнать команду, либо воспользоваться браузерными тестами и RIPE Atlas (о них в конце раздела).
1. ping - базовый RTT и потери пакетов. Отправляем 20 пакетов, чтобы увидеть разброс, а не одно случайное значение.
ping -c 20 example.com
-c 20- число пакетов; на Windows вместо этогоping -n 20 example.com.
Что вы должны увидеть в последней строке: rtt min/avg/max/mdev = 12.3/14.1/22.7/2.1 ms. Смотрите на avg (среднее) и mdev (среднее отклонение RTT; в быту его называют джиттером, хотя строго это не одно и то же) - чем меньше mdev, тем стабильнее канал. Строка 0% packet loss означает, что потерь нет. Потери в ping - повод разобрать маршрут подробнее через mtr, но ещё не доказательство проблем с реальным трафиком: ICMP-пакеты многие сети и серверы ограничивают по скорости или фильтруют отдельно, при этом сайт нормально работает по TCP на порту 443.
2. mtr - показывает весь путь по шагам (hop за hop) и потери на каждом. Утилиты может не быть в системе, ставится пакетом mtr-tiny.
sudo apt install mtr-tiny
mtr -rw -c 100 example.com
-r- вывести отчёт и выйти, а не крутить интерактивный режим;-w- широкий формат, не обрезает имена узлов;-c 100- сто циклов, чтобы статистика была осмысленной.
Как читать. Если столбец Avg резко вырос на каком-то шаге и повышенная задержка держится на всех следующих узлах вплоть до конечного - скорее всего, дополнительная задержка появляется на этом участке маршрута. Слово «узкое место» здесь осторожное: промежуточные маршрутизаторы отвечают на служебные пакеты не так и не с тем приоритетом, как форвардят обычный трафик, поэтому один подскок RTT на среднем узле сам по себе ещё ни о чём не говорит. Потери (Loss%) на последнем шаге - реальная проблема; потери на промежуточном узле при нулевых на последнем означают, что маршрутизатор просто не отвечает на служебные пакеты, это можно игнорировать. По именам узлов (в них часто зашиты коды городов и аэропортов - fra, ams, waw) видно, если трафик уходит крюком. Для веб-сервера релевантнее бывает проба по TCP на порт 443, а не дефолтный ICMP:
sudo mtr -T -P 443 -rw -c 100 example.com
3. curl -w - измеряет TTFB, то есть сколько реально ждёт браузер до первого байта страницы. Это задержка плюс установка соединения плюс работа сервера - ровно то, что чувствует пользователь.
curl -w "%{time_starttransfer}\n" -o /dev/null -s https://example.com
-w "%{time_starttransfer}\n"- вывести время до первого байта (в секундах) и перенос строки;-o /dev/null- тело ответа выбросить, оно нам не нужно;-s- без индикатора прогресса.
Запустите команду 5-10 раз подряд и смотрите на диапазон значений, а не на одно число. Каждый отдельный запуск curl - это новый процесс и новое сетевое соединение: «прогретый» коннект между запусками не переиспользуется. DNS при этом может быть закэширован системой, поэтому первый запуск иногда чуть медленнее остальных - это нормально. Чтобы понять, где именно ушло время, возьмите развёрнутую разбивку:
curl -w "dns %{time_namelookup} tcp %{time_connect} tls %{time_appconnect} ttfb %{time_starttransfer}\n" -o /dev/null -s https://example.com
Здесь видно вклад каждого этапа: dns - резолв имени, tcp - установка TCP-соединения, tls - TLS-рукопожатие, ttfb - до первого байта ответа. Разница ttfb минус tls - это примерно один RTT плюс генерация ответа на сервере.
4. Браузерные тесты и RIPE Atlas. Если в нужном регионе у вас нет ни машины, ни знакомых - используйте сервисы вроде KeyCDN Performance Test и аналогов: они гонят запрос к вашему хосту из десятков точек мира и показывают TTFB с каждой. RIPE Atlas - сеть из тысяч зондов по всему миру; можно разово запустить ping или traceroute с зондов рядом с вашей аудиторией (тратятся кредиты, бесплатный лимит появляется, если вы сами держите зонд). Это лучший способ, когда «ваша аудитория» - конкретная страна, куда вы физически не дотягиваетесь.
Близко, но медленно: пиринг и транзит
Иногда сервер географически рядом, а ping до него хуже, чем до более далёкого. Причина - в том, как сети обмениваются трафиком.
Пиринг - когда две сети соединяются напрямую и обмениваются трафиком, обычно на точке обмена трафиком (IX) в конкретном городе: AMS-IX в Амстердаме, DE-CIX во Франкфурте, France-IX в Париже, RIX в Риге, TLLIX в Таллине. Транзит - когда вы платите крупной сети, чтобы она донесла ваш трафик до всех остальных. Если у провайдера в стране слабый локальный пиринг, трафик из соседнего города может уходить на обмен во Франкфурт или Стокгольм и возвращаться обратно - лишние сотни километров и плюс 20-40 мс на пустом месте. В Балтии это классическая история: пакет из Литвы в Латвию иногда путешествует через Швецию. Работает это и в обратную сторону: путь между двумя «дальними» странами бывает короче, чем ожидаешь по карте, если обе хорошо представлены на одном крупном IX.
Как это увидеть - тем же mtr -rw -c 100 (или с -T -P 443). Если на маршруте из Варшавы в Ригу мелькают узлы с sto или fra в имени, а Avg на них подскакивает - вот он, крюк. Лечится либо выбором провайдера, который присутствует на местной точке обмена, либо просто: померьте кандидатов и доверяйте числу, а не карте.
Как выбрать локацию для VPS под вашу аудиторию
Если измерения показали, что разница между вариантами - единицы миллисекунд, выбирайте по цене, юрисдикции и поддержке, а не по задержке. Если разница в десятки миллисекунд и проект интерактивный - нужен ориентир.
Таблица ниже - не универсальная карта Европы. Для Центральной Европы естественный кандидат - Германия, для Скандинавии - Стокгольм или Хельсинки, для Польши - Варшава; и пользователь из Восточной Европы не гарантированно получит меньший RTT до Риги, чем до Франкфурта, - решает BGP и пиринг конкретных провайдеров. Это стартовая гипотеза для выбора между четырьмя локациями, которые есть у WeaselCloud (NL, FR, LV, EE). Финальный выбор всё равно делайте по замерам.
Ваша аудитория | Из локаций WeaselCloud скорее подойдёт | Почему |
|---|---|---|
Западная и Центральная Европа: Германия, Бенилюкс, Франция, Британия, скандинавские хабы | Нидерланды (NL) или Франция (FR) | Амстердам и Париж - крупнейшие узлы региона с плотным пирингом; из четырёх вариантов это обычно ближайшие по маршрутам |
Балтия, Северная и Восточная Европа, аудитория с ориентиром на СНГ | Латвия (LV) или Эстония (EE) | Рига и Таллин из этой четвёрки ближе к такой аудитории и по километрам, и по маршрутам, чем западные хабы |
Глобальная аудитория, сайт за CDN, а также фоновые задачи: боты, бэкапы, очереди, крон | Локация почти не важна | Контент отдаётся с CDN, а фоновым задачам лишние миллисекунды безразличны - берите по цене и удобству |
У WeaselCloud европейские локации - Нидерланды, Франция, Латвия и Эстония. Прежде чем оформлять заказ, прогоните ping и curl -w до каждой из них со стороны вашей аудитории (или через RIPE Atlas и браузерный тест) и сравните числа. Если они близки - решайте по остальным критериям. Тарифы и действующие промокоды, если они сейчас есть, - на странице тарифов. Если вы не выбираете сервер с нуля, а переносите готовый проект, это отдельная тема - про неё будет отдельный разбор.
Таблица: типичная задержка между европейскими точками
Числа ниже - иллюстративные диапазоны, прикинутые из географического расстояния и типичного оверхеда маршрутизации (×1,3-2), а не результат единого замера. Ваш маршрут и ваш провайдер дадут другие значения. Это повод померить самому, а не готовый ответ.
Маршрут | Расстояние (примерно) | Теоретический минимум по расстоянию | Ориентировочный RTT с маршрутизацией |
|---|---|---|---|
Амстердам - Франкфурт | ~360 км | ~4 мс | ~6-14 мс |
Амстердам - Париж | ~430 км | ~4 мс | ~10-22 мс |
Франкфурт - Рига | ~1300 км | ~13 мс | ~25-35 мс |
Амстердам - Рига | ~1500 км | ~15 мс | ~40-55 мс |
Амстердам - Таллин | ~1600 км | ~16 мс | ~40-60 мс |
Амстердам - Нью-Йорк | ~5900 км | ~59 мс | ~75-90 мс |
Амстердам - Сингапур | ~10 500 км | ~105 мс | ~150-170 мс |
Расстояние здесь географическое, по карте; реальный подводный кабель идёт не строго по прямой, поэтому «теоретический минимум» - это нижняя граница, ниже которой не бывает, а не то, что вы увидите. Из таблицы видно две вещи. Внутри Западной Европы всё укладывается в 5-25 мс - для большинства задач это одинаково быстро, и спор «Амстердам или Париж» чаще всего беспредметен. А трансатлантика и Азия - уже другой порядок: если у вас есть пользователи в США и в Европе одновременно, одним сервером хорошо не сделать, нужен CDN или второй узел.
FAQ
Какая задержка считается хорошей для VPS?
Для интерактивных задач ориентир такой: RTT до 30 мс - отлично, 30-80 мс - нормально и почти незаметно, 80-150 мс - терпимо, выше 150 мс - чувствуется в панелях, играх и звонках. Для блога, бота, бэкапов и фоновых задач подойдёт практически любое значение вплоть до 200-300 мс.
Ping и RTT - это одно и то же?
ping - это утилита, которая измеряет RTT (round-trip time), время прохождения пакета до хоста и обратно. Когда говорят «пинг 20 мс», имеют в виду именно RTT - полный оборот «туда и обратно». Половину RTT иногда берут как очень грубую оценку задержки в одну сторону, но время отклика приложения включает полный обмен запросом и ответом, а при новом соединении - ещё TCP/TLS-рукопожатия.
Влияет ли локация VPS на позиции сайта в поиске?
Косвенно и слабо. Низкий TTFB ускоряет загрузку и влияет на пользовательские метрики, в том числе на LCP, а Google использует Core Web Vitals в оценке качества страницы. Но разница в пару десятков миллисекунд RTT из-за страны сервера сама по себе позиции почти не двигает. Гораздо важнее не перегруженный сервер и, для глобальной аудитории, CDN.
Нужен ли VPS рядом с пользователями, если сайт за CDN?
Чаще всего нет - но с оговоркой. Если CDN реально кэширует нужный посетителю HTML и статику, тот получает их с ближайшего edge-узла, и локация источника становится вопросом удобства и цены. Если же HTML не кэшируется, случается промах кэша или на странице много запросов к API - эти обращения идут прямо на ваш сервер-источник, и его расположение снова влияет на скорость.
Почему сервер в соседней стране пингуется хуже, чем дальний?
Из-за маршрутизации и пиринга. Если у местного провайдера нет прямого обмена трафиком на локальной точке обмена, пакеты уходят на крупный хаб (Франкфурт, Стокгольм) и возвращаются, накручивая лишние километры и миллисекунды. Увидеть крюк можно в mtr по именам промежуточных узлов.
Как померить задержку до сервера, которого у меня ещё нет?
Три способа: заказать минимальный тариф на месяц и протестировать; попросить знакомого в нужном регионе прогнать ping и curl -w; запустить разовое измерение через RIPE Atlas с зондов рядом с вашей аудиторией. Многие провайдеры также публикуют тестовый IP или файл для каждой локации.
mtr показывает потери на промежуточном узле - это плохо?
Не обязательно. Если на последнем узле маршрута потерь нет, а на среднем есть - это почти всегда значит, что промежуточный маршрутизатор просто не отвечает на служебные пакеты в приоритетном порядке. Тревожный признак - потери, которые начинаются на каком-то узле и держатся до самого конца.
Коротко
- Задержку задаёт физика (около 1 мс round trip на 100 км оптоволокна) плюс маршрутизация сверху (плюс 30-100%). Ниже физического минимума не опустится никто.
- Сетевой вклад в отклик приложения близок к полному RTT из
ping, а при новом соединении добавляются TCP/TLS-рукопожатия. Половина RTT - лишь грубая оценка задержки в одну сторону. - Локация критична для интерактивных панелей, игр, звонков, real-time API и трейдинга. Для блога за CDN, ботов, бэкапов, крона и очередей - почти не важна.
- Меряйте со стороны аудитории, а не от себя:
ping -c 20,mtr -rw -c 100(или-T -P 443),curl -w "%{time_starttransfer}\n"в 5-10 прогонов. - Из четырёх локаций WeaselCloud: для Западной и Центральной Европы обычно ближе Нидерланды или Франция, для Балтии и аудитории из СНГ - Латвия или Эстония. Это гипотеза для проверки замером, а не универсальная карта Европы.
- «Близко, но медленно» - это про слабый пиринг: трафик делает крюк через дальний хаб. Видно в
mtr. - Таблица задержек - порядок величины. Перед покупкой прогоните
pingдо локации-кандидата сами.
