Как работает DNS caching и почему возникают странные задержки

8 минут чтения
Средний рейтинг статьи — 4.7

Когда пользователь открывает сайт, браузер сначала должен узнать IP-адрес сервера. Для этого используется DNS.

Обычно DNS воспринимают как «мгновенную» систему, но на практике именно DNS часто становится причиной странных задержек:

  • сайт долго открывается только первый раз
  • API иногда отвечает медленно
  • часть пользователей видит деградацию, а часть — нет

Во многом это связано с DNS caching.

Что такое DNS caching

DNS caching — это механизм кэширования DNS-ответов.

Вместо того чтобы каждый раз заново спрашивать IP-адрес у DNS-сервера, система временно сохраняет ответ.

Это уменьшает:

  • latency
  • нагрузку на DNS-инфраструктуру
  • количество запросов

Практически все уровни сети используют кэш:

  • браузер
  • ОС
  • локальный резолвер
  • DNS провайдер
  • CDN

Как происходит DNS lookup

Когда приложение делает запрос к домену:

  1. Проверяется локальный кэш
  2. Проверяется кэш ОС
  3. Запрос идёт на рекурсивный резолвер
  4. Резолвер обращается к авторитативному DNS
  5. Ответ кэшируется

Если запись уже есть в кэше:

  • lookup происходит очень быстро

Если нет:

  • начинается полноценное DNS-разрешение

TTL и cold cache

TTL (Time To Live) — это время жизни DNS-записи. Например, TTL = 300 секунд означает, что ответ можно использовать 5 минут без повторного запроса. После истечения TTL запись нужно получать заново.

Отсюда же распространённая ситуация: первый запрос медленный, последующие быстрые. Причина почти всегда в cold cache. Первый запрос требует DNS lookup, TCP/TLS handshake, возможно установку новых соединений. После прогрева кэша часть этих операций исчезает.

DNS умеет кэшировать не только успешные ответы, но и ошибки — NXDOMAIN, SERVFAIL. Это называется negative caching. Из-за него исправленная DNS-запись может ещё долго не работать, а часть пользователей будет продолжать получать ошибку.

Почему возникают странные задержки

DNS-проблемы часто выглядят хаотично.

Разные рекурсивные резолверы. У пользователей могут быть Google DNS, Cloudflare DNS или DNS провайдера. У каждого свой кэш и своё время обновления. В результате часть пользователей получает старый IP, часть — новый.

Cache miss. Если запись выпала из кэша, резолвер вынужден заново обходить DNS-цепочку. Это увеличивает latency.

Медленные авторитативные DNS. Если авторитативный DNS отвечает медленно, это влияет на все cache miss.

География. Рекурсивный резолвер может находиться далеко от авторитативного DNS. Это добавляет network latency.

DNS over TCP. Иногда DNS переключается с UDP на TCP — большие ответы, fragmentation, проблемы сети. Это резко увеличивает время ответа.

CDN и локальный кэш ОС

CDN активно используют DNS для маршрутизации: выбор ближайшего POP, geo routing, failover. Из-за этого DNS latency напрямую влияет на производительность сайта.

Многие забывают, что ОС тоже кэширует DNS — systemd-resolved, nscd, Windows DNS cache. Поэтому даже после изменения записи локальная система может использовать старый IP.

Как уменьшить DNS latency

Использовать быстрые рекурсивные резолверы — например, Cloudflare DNS или Google DNS.

Настраивать TTL осознанно. Слишком маленький TTL → больше запросов; слишком большой → медленное обновление.

Anycast DNS уменьшает географическую задержку.

Следить за авторитативными DNS — они тоже могут быть причиной боттлнека.

Использовать локальный кэш — это уменьшает количество внешних запросов.

На практике важно проверять DNS отдельно от приложения, мониторить DNS lookup time, не ставить TTL слишком маленьким без необходимости, помнить про negative caching и учитывать время распространения DNS после миграций.

Итог

DNS caching делает интернет быстрым и масштабируемым.

Но именно кэширование часто становится причиной странных и трудноуловимых задержек.

Понимание того, как работают:

  • TTL
  • рекурсивные резолверы
  • локальные кэши
  • авторитативные DNS

помогает быстрее находить проблемы и объяснять нестабильное поведение сервисов.

8 минут чтения
Средний рейтинг статьи — 4.7

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний