Buenas Prácticas de Solución de Problemas en Producción
Hábitos de prevención que reducen la duración de los incidentes para plataformas Go: SLOs, dashboards, runbooks y respuestas ensayadas.
Busca en todas las páginas de la documentación
Hábitos de prevención que reducen la duración de los incidentes para plataformas Go: SLOs, dashboards, runbooks y respuestas ensayadas.
Aplícalo como una rúbrica de revisión de diseño e higiene trimestral de la plataforma, no solo después de las interrupciones.
sql.DB.Stats() como Prometheus gauges. WaitCount alerta sobre el agotamiento del pool antes de la detención total.request_id y trace_id. La correlación reduce el tiempo de búsqueda de logs durante SEV-1./healthz. Correlación de despliegue sin necesidad de buscar en CI./debug/pprof públicamente.MaxOpenConns a partir de la fórmula de límite de DB / recuento de réplicas. Documenta la aritmética en el README del servicio.GOMEMLIMIT a ~90% del límite de memoria del contenedor. Reduce OOMKilled antes de aumentar ciegamente los límites.GOMAXPROCS para que coincida con la cuota de CPU (o usa automaxprocs). La latencia de la cola de ejecución muestra desajustes en los traces.QueryContext con deadlines en cada llamada a la base de datos. Las esperas del pool no deben superar los tiempos de espera del cliente.context.Context a todas las goroutines en segundo plano. Reduce la clase de fugas que sobreviven a los reinicios.Server.Shutdown por debajo del período de gracia de K8s. Evita falsos 5xx durante los despliegues.Los niveles A y B deben ser verdaderos antes de cualquier lanzamiento de producción.
Los niveles C a E maduran a lo largo de los trimestres; prioriza los elementos que quemaron presupuesto de error en los últimos dos incidentes.
Si todos los niveles pasan la revisión y el game day tiene éxito, pospón nuevas herramientas hasta la próxima brecha medida.
Métricas RED, pool de conexiones limitado, contexto en llamadas a la base de datos, pprof no público, metadatos de salud y ruta de reversión.
Las mejores prácticas previenen clases de fallos.
Los runbooks ejecutan pasos durante incidentes activos.
Ambos son requeridos.
Realiza una simulación de mesa como mínimo una vez al año.
Treinta minutos de recorrido superan el primer OOM real por sí solo.
La quema de SLO activa la severidad del incidente y la política de congelación de despliegues.
Las alertas deben mapearse a las ventanas de SLO, no solo a umbrales estáticos.
RED por servicio, goroutines, heap, pausa de GC, espera del pool, CPU/memoria vs límites, marcadores de despliegue.
Sí.
Los workers también necesitan límites de pool, cancelación de ctx, métricas y acceso a perfiles.
Después de cada SEV-1 y cuando las actualizaciones de versión menor de Go cambien el comportamiento de GC.
CI puede prohibir sql.Query sin contexto en código nuevo, requerir ReadHeaderTimeout y bloquear rutas de pprof públicas en la revisión de configuración.
El traspaso y los dashboards anotan la quema de SLO por región.
Los perfiles pueden ser específicos de la región durante interrupciones parciales.
Cuando los SLOs están en verde, los game days se aprueban y los últimos dos incidentes tuvieron alertas que se activaron antes del impacto a nivel de cliente.
Optimiza las características hasta la próxima regresión medida.
Versiones de Stack: Esta página fue escrita para Go 1.26.x (predeterminado Green Tea GC, go fix modernizers - verifica el parche en la compilación), chi (última versión - verifica en la compilación), gin (última versión - verifica en la compilación), echo (última versión - verifica en la compilación), google.golang.org/grpc (última versión - verifica en la compilación), sigs.k8s.io/controller-runtime (última versión - verifica en la compilación), kubebuilder (última versión - verifica en la compilación), tinygo (última versión - verifica los objetivos de la placa en la compilación), wazero (última versión - verifica en la compilación) y golangci-lint (última versión - verifica el conjunto de linters en la compilación).
Revisado por Chris St. John·Última actualización: 18 jul 2026