TGViewer
DevOps DevOps @devopsitsec · 23.7K subscribers
Post #1534 4.14K
🎯 Задача для продвинутых DevOps-инженеров: «Неуловимый таймаут»

🧠 Уровень: Senior DevOps / SRE / Infrastructure Architect
📦 Стек: Kubernetes, Docker, NGINX, Istio, PostgreSQL, Prometheus, Cloudflare

📍 Ситуация:

Продакшен-приложение периодически отдаёт 504 Gateway Timeout на определённые API-запросы. Проблема:
- возникает только при внешнем трафике (через Cloudflare)
- не воспроизводится в staging-окружении
- не зависит от нагрузки — может случиться в 3 часа ночи
- происходит на разных endpoint'ах, но всегда спустя 100 секунд

📈 Метрики:
- В K8s pod'ах таймаутов нет
- NGINX ingress не логирует ошибок
- Istio mesh — без аномалий
- PostgreSQL работает стабильно, без долгих транзакций
- В логах нет ни timeout, ни broken pipe, ни reset by peer

---

🧩 Ваша задача:

1. Найти, где именно происходит таймаут — в сети, прокси, mesh, firewall или app
2. Выяснить, почему именно 100 секунд
3. Подтвердить гипотезу, не разрушая прод
4. Предложить решение без увеличения всех таймаутов подряд
5. Составить диагностический plan на случай повторного возникновения

💡 Подсказка:

- NGINX по умолчанию имеет proxy_read_timeout 60, но это не оно
- Cloudflare автоматически завершает соединения по таймауту 100 секунд
- Если вы используете long-polling или upload, CDN может прерывать соединение до ответа

🛠 Решение (примерный путь):

1. Проверить `curl -v` через Cloudflare и напрямую — сравнить TTL
2. Выставить `proxy_request_buffering off` и `client_body_timeout`
3. Обновить Ingress с `
nginx.ingress.kubernetes.io/proxy-read-timeout: "180"`
4. Проверить KeepAlive между Envoy и backend
5. В Cloudflare использовать `chunked encoding` или WebSockets, если запросы >100с

📌 **Вывод:**
Таймаут в 100 секунд — не случайность. Это один из самых частых лимитов на уровне облачных прокси и CDN. DevOps-инженер должен уметь находить такие «невидимые» границы между слоями системы и грамотно обходить их.

💬 Поделись решением с командой — и запиши его в postmortem, чтобы не попасться второй раз.

@devopsitsec
  • 👍 18
  • ❤ 7
  • 🔥 1
  • 🥰 1
More from @devopsitsec
  1. Sep 28, 2026Фильтр Блума: миллион элементов в 1,2 МБ - как это работает? Почему алгоритм «помнит» то,…
  2. Sep 26, 2026Согласны ?
  3. Sep 26, 2026📌Fable 5.1 рассчитала амплитуду рассеяния в девяти петлях Модель в среде Claude Science р…
  4. Sep 25, 2026Как строить инфраструктуру, когда часть сервисов — on-prem, а часть — в cloud Гибридная ин…
  5. Sep 24, 2026Снёс коммиты? Как вернуть код после git reset -hard Одна команда - и три коммита исчезли и…
  6. Sep 24, 2026⚡️ В Kubernetes соединения случайно обрываются под нагрузкой? Проверьте conntrack. Если та…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →