Странная ситуация: у вас сайт открывается мгновенно, а клиент из Новосибирска или из Алматы жалуется, что всё грузится по пять секунд. Сервер при этом не перегружен, графики спокойные. Обычно причина не в сервере, а в дороге до него: расстоянии, маршруте конкретного провайдера, потерях пакетов или сторонних ресурсах на странице. Ниже — как понять, что именно тормозит у части пользователей, как это измерить и что помогает, а что нет.
Как отличить задержку от медленного сервера
Если тормозит сам сервер, медленно становится всем: и вам, и клиентам, и мониторингу. Время ответа растёт одинаково из любой точки. Если всё быстро у вас и медленно у части людей — это почти всегда сеть.
Быстрая проверка — попросить пожаловавшегося пользователя выполнить у себя одну команду (Windows 10 и новее, macOS, Linux):
curl -o NUL -s -w "Connect: %{time_connect}\nTLS: %{time_appconnect}\nTTFB: %{time_starttransfer}\nTotal: %{time_total}\n" https://example.com/
В Windows команду запускают в обычной командной строке (cmd); в PowerShell вместо curl нужно писать curl.exe. В macOS и Linux вместо NUL пишется /dev/null.
Если Connect у него 0,15 с, а у вас 0,02 — дело в расстоянии или маршруте. Если и у вас, и у него большой только TTFB — тормозит сервер, и тогда вам в статью «Как ускорить сайт на VPS».
Почему 100 мс превращаются в секунду
Задержка (RTT) — время, за которое пакет доходит до сервера и обратно. Сама по себе 100–150 мс выглядит мелочью. Но страница не загружается за один обмен: прежде чем браузер получит первый байт, он несколько раз сходит туда и обратно.
| Этап | Обменов | При 20 мс | При 150 мс |
|---|---|---|---|
| DNS-запрос (если не в кэше) | 1 | 20 мс | 150 мс |
| TCP-соединение | 1 | 20 мс | 150 мс |
| TLS (HTTPS), версия 1.3 | 1 | 20 мс | 150 мс |
| Запрос и первый байт ответа | 1 | 20 мс | 150 мс |
| До первого байта | 4 | 80 мс | 600 мс |
И это только HTML. Потом браузер видит стили, скрипты, шрифты, счётчики — и если часть из них лежит на других доменах, на каждый домен снова платятся DNS, TCP и TLS. Страница с десятком сторонних ресурсов на дальнем расстоянии легко набирает 3–5 секунд, хотя сервер отвечает за 50 мс.
Отсюда главный вывод: с задержкой борются не ускорением сервера, а сокращением числа обменов и расстояния.
Как измерить, где теряется время
mtr — маршрут и потери
mtr объединяет ping и traceroute: показывает каждый узел по дороге, задержку и потери на нём. Пользователь в Windows может поставить WinMTR, в Linux и macOS — пакет mtr:
mtr -rwc 100 example.com
Сто пакетов дают устойчивую статистику. Как читать отчёт:
- Задержка резко прыгает на одном узле и дальше держится — это и есть «длинный» участок: часто трансграничный стык или крюк через другую страну. Пример: пакеты из Москвы в Хельсинки идут через Франкфурт — и 25 мс превращаются в 60.
- Потери на промежуточном узле, но не на последнем — обычно не проблема: роутеры отвечают на диагностические пакеты с низким приоритетом.
- Потери на последнем узле (на вашем сервере) — реальные потери. Даже 1–2% заметно замедляют HTTPS: потерянные пакеты отправляются заново с паузой.
- Большой разброс (столбцы Best и Wrst отличаются в разы) — нестабильный канал, чаще всего мобильная сеть или перегруженный Wi-Fi у пользователя.
Полезно запустить mtr и в обратную сторону — с сервера до IP пользователя: маршруты туда и обратно бывают разными.
Проверка из многих точек
Сервисы вроде check-host.net и ping.pe измеряют задержку и доступность сайта из десятков городов одновременно, в том числе из разных регионов России. Так видно, у кого проблема — у одного провайдера, у целого региона или у всех за пределами Европы.
Данные реальных посетителей
Самая честная картина — от реальных пользователей. Счётчики аналитики показывают время загрузки по регионам и типам устройств; если медленно только в одном регионе или только на мобильных, это сразу видно. Подойдёт и простой скрипт, который отправляет на сервер данные Navigation Timing из браузера.
Частые причины
| Что видно | Причина | Что делать |
|---|---|---|
| Медленно всем в далёком регионе | Расстояние до сервера | Кэш и CDN для статики, меньше обменов; при большой доле аудитории — сервер ближе |
| Медленно абонентам одного провайдера | Плохой маршрут или перегруженный стык у этого провайдера | mtr от пользователя, обращение к провайдеру; иногда помогает другая локация сервера |
| Медленно на мобильном интернете | Потери и разброс задержки в сотовой сети | Облегчить страницу, меньше доменов и запросов |
| Страница «висит», а потом догружается | Сторонний ресурс недоступен или замедлен у пользователя | Найти его во вкладке «Сеть» браузера, перенести файлы к себе |
| Медленно только у части, у кого есть IPv6 | Маршрут по IPv6 хуже, чем по IPv4 | Проверить mtr -6; если плохо — исправлять или временно не публиковать AAAA |
| Медленно всем, включая вас | Сервер, а не сеть | Смотреть TTFB, нагрузку, базу |
Отдельно о сторонних ресурсах для аудитории из России
Частый случай последних лет: сайт на сервере в Европе работает нормально, а страница у российских пользователей «застревает». Причина — ресурсы на чужих доменах, доступ к которым у российских провайдеров ограничен или замедлен. Например, с 9 июня 2025 года российские провайдеры ограничивают трафик к сайтам за Cloudflare: по данным самой Cloudflare, проходят только первые 16 КБ ответа, поэтому крупные страницы и файлы не догружаются. То же касается шрифтов, скриптов и виджетов, которые подключены с внешних CDN.
Что делать: откройте страницу в браузере с российским подключением, вкладка «Сеть» покажет запросы, которые висят или обрываются. Шрифты, библиотеки и картинки перенесите на свой сервер, а если сайт работает через иностранный CDN или защиту от атак — проверьте, как он открывается из России, и при необходимости переключите домен на прямую работу с сервером.
Что помогает
1. Меньше обменов на каждую страницу
- HTTP/2 и keep-alive — все ресурсы идут по одному соединению, TCP и TLS оплачиваются один раз. Как включить — в статье «Как ускорить сайт на VPS».
- TLS 1.3 — на одно рукопожатие меньше, чем у 1.2. В Nginx:
ssl_protocols TLSv1.2 TLSv1.3; - Меньше чужих доменов. Каждый новый домен — это DNS, TCP и TLS заново. Шрифты, скрипты, иконки лучше отдавать со своего сервера.
- Для неизбежных сторонних доменов — подсказка браузеру установить соединение заранее:
<link rel="preconnect" href="https://cdn.example.net">.
2. Кэш и CDN
Статика с правильными заголовками кэширования при повторном визите вообще не запрашивается. CDN отдаёт картинки, стили и скрипты с узла рядом с пользователем, а сервер остаётся один. Для российской аудитории выбирайте CDN, у которого есть узлы в России и который нормально доступен российским провайдерам.
3. Приложение, которое уважает расстояние
Если интерфейс делает двадцать запросов к API один за другим, каждый платит полную задержку: при 130 мс это почти три секунды ожидания при мгновенном сервере.
- Объединяйте мелкие запросы в один, который возвращает всё нужное.
- Выполняйте параллельно то, что не зависит друг от друга.
- Не ждите тяжёлого. Письмо, отчёт, выгрузку — примите, подтвердите и выполните в фоне.
- Ставьте таймауты явно и повторяйте с нарастающей паузой. На дальних маршрутах потери чаще, а зависший без таймаута запрос держит процесс и в пике может уложить сервер.
4. Сервер ближе к пользователям
Если медленно не отдельным людям, а заметной части аудитории — в другой стране или на другом конце России, — оптимизация лишь смягчит проблему. Радикальное решение — сократить расстояние: перенести сервер ближе к основной аудитории или поставить второй сервер для другого региона. Как выбрать площадку по аудитории, законам и задачам — в статье «Как выбрать локацию сервера».
Ориентиры по задержке из России до наших площадок:
| Аудитория | Площадка | Задержка из РФ |
|---|---|---|
| Россия, СНГ | Россия (Москва, Санкт-Петербург) | 1–10 мс |
| Россия, северо-запад, Европа | Финляндия (Хельсинки) | 20–40 мс |
| Вся Европа | Нидерланды (Амстердам) | 40–60 мс |
| Казахстан, Средняя Азия | Казахстан (Алматы) | 50–80 мс |
| Северная Америка | США (Нью-Йорк, Лос-Анджелес) | 100–150 мс |
Перед переездом проверьте на практике: возьмите младший тариф в новой локации на месяц и попросите тех, у кого медленно, прогнать mtr до нового IP.
Start в Финляндии — $10/мес Start в Казахстане — $10/мес Start в США — $10/мес
Цены указаны на момент публикации, оплата у провайдера.
Что не поможет
- Более мощный процессор. Он ускоряет обработку, но не дорогу. Если сервер отвечает за 10 мс, а дорога занимает 130, ускорение сервера вдвое сэкономит 5 мс из 140.
- Более широкий канал. Скорость определяет, сколько данных пройдёт за секунду, а не как быстро придёт первый ответ.
- Перезагрузка сервера и смена тарифа при проблеме у одного провайдера пользователя: маршрут от этого не изменится.
Коротко
- Медленно только части пользователей — почти всегда сеть, а не сервер. Сравните
Connectи TTFB у вас и у них. - Задержка умножается на число обменов: при 150 мс до первого байта уходит около 0,6 с.
- Ищите проблемный участок через
mtrи проверки из многих точек. - Для аудитории из России проверьте сторонние ресурсы и иностранные CDN: часть из них замедляется провайдерами.
- Помогают HTTP/2, TLS 1.3, меньше доменов, кэш, CDN и приложение без цепочек запросов; радикально — сервер ближе к аудитории.
