Перейти к содержанию

Troubleshooting

Runbook'и для типовых инцидентов: «что вижу → причина → как починить». Страницы построены так, чтобы на pager'е или на встрече инцидента открыть одну и пройти сверху вниз по секциям.

Правило: сначала сюда, потом в чат

Перед тем, как писать «у меня упало» в чат — прочитай соответствующую страницу. В 80% случаев ответ уже есть здесь, и ты разберёшься быстрее, чем дождёшься ответа. Если runbook не покрывает твой симптом — напиши в чат и заведи PR на этот handbook: добавь раздел со своим случаем.

Страницы

  • kafka-consumer-stuck.md — consumer не потребляет сообщения, лаг растёт. Причины: долгий handler, rebalance-loop, panic, DLQ, Redis недоступен.
  • kafka-rebalancing.md — rebalance-loop: как отличить от stuck, медленный handler, GC pauses, static membership, cooperative sticky.
  • migration-fails.mdmake migrate-up / golang-migrate CLI падает. dirty state, advisory lock, deadlock, SSL mismatch, несинхронизированная схема.
  • db-slow-query.md — медленный SQL: локализация через Tempo / pg_stat_statements, EXPLAIN ANALYZE, индексы, висячие транзакции, bloat.
  • memory-leak.md — heap/goroutine leak: pprof, diff между snapshot'ами, типовые причины (кэш, незакрытый body, channel без sender, time.Tick).
  • redis-unavailable.md — Redis лежит или тормозит: dial/timeout/pool exhausted/OOM/READONLY, команды диагностики, порядок действий.
  • test-hangs.md — тест висит или не завершается. testcontainers Docker, goroutine leak, time.Sleep вместо eventually, select без ctx.Done().

Связанные страницы