¿Qué es Hibernation?
La Hibernation (suspensión automática) de Laravel Cloud es una funcionalidad antigua que transiciona un entorno a estado suspendido cuando no hay peticiones HTTP durante un tiempo determinado. En la nueva Flex Compute actual, se utiliza como sucesor el Scale to Zero, más rápido. La Hibernation de Legacy Flex permite detener la facturación de compute durante la suspensión, pero la reactivación tras recibir una petición HTTP suele tardar entre 5 y 20 segundos. En el nuevo Scale to Zero, el arranque se ha reducido a menos de 500 ms, y además, incluso durante la suspensión, el entorno se arranca automáticamente para tareas programadas y procesamiento de colas.Lo que ha cambiado con Scale to Zero
En el Scale to Zero de la nueva Flex Compute, se han resuelto en gran medida los puntos problemáticos de la Hibernation anterior.| Elemento | Hibernation antiguo | Nuevo Scale to Zero |
|---|---|---|
| Reactivación por petición HTTP | 5–20 s | Menos de 500 ms |
| Scheduled Tasks | No se ejecutan durante la suspensión | Se arrancan automáticamente y se ejecutan incluso durante el sleep |
| Procesamiento de cola | No funciona durante la suspensión | Se arranca automáticamente incluso durante el sleep. Se recomienda usar Managed Queues |
| Uso recomendado | Operación de ahorro para el antiguo entorno Flex | Configuración estándar actual |
En la Hibernation anterior había el problema de que las tareas programadas y las colas no funcionaban durante la suspensión. En Scale to Zero este problema se ha resuelto, y en particular, el procesamiento de colas puede continuar de forma segura aunque el App cluster esté dormido si se usa Managed Queues.
Pasos para activar la Hibernation antigua
Abre el App compute cluster
En el dashboard del lienzo de infraestructura del entorno, haz clic en App compute cluster.
Limitaciones durante la suspensión de la Hibernation antigua
Mientras Hibernation está activa y el entorno está suspendido, no funcionan las siguientes funciones.| Función | Comportamiento durante la suspensión |
|---|---|
| Procesamiento de peticiones HTTP | Detenido (se procesa tras la reactivación) |
| Task Scheduler | No se ejecuta |
| Queue Worker | No se ejecuta |
| Procesos en segundo plano personalizados | No se ejecutan |
Cuando se reactiva desde la suspensión, estos procesamientos se reanudan automáticamente. Sin embargo, los jobs programados que “deberían haberse ejecutado” durante la suspensión no se ejecutan retroactivamente.
- La suspensión solo es posible en Flex Compute. En Pro Compute no se puede activar Hibernation.
- La suspensión se realiza por entorno. Cuando el App cluster se suspende, todos los Worker cluster del mismo entorno también se suspenden.
Causas de reactivación innecesaria
Si hay una petición HTTP, el entorno se reactiva automáticamente, pero también se producen reactivaciones por peticiones no intencionadas.- Bots y crawlers: motores de búsqueda o escáneres de seguridad rastrean páginas automáticamente
- Previsualizaciones de enlaces en Slack o Teams: apps de mensajería acceden para obtener miniaturas de los enlaces
- Escaneos de WordPress: escaneos automáticos que buscan entornos de WordPress acceden a
/wp-adminy similares - Ataques que buscan archivos
.php: escaneos automáticos que apuntan directamente a archivos PHP
*.laravel.cloud de Laravel Cloud se les añade la cabecera X-Robots-Tag: noindex, nofollow para que no sean indexados por los motores de búsqueda, pero si el dominio se descubre, no se puede evitar del todo. En los dominios personalizados no se añade la cabecera noindex.
Prevenir reactivaciones innecesarias con Path Blocking
Path Blocking es una funcionalidad que bloquea, sin procesar, las peticiones a determinadas extensiones o rutas mientras el entorno está suspendido. Previene reactivaciones innecesarias causadas por escaneos de WordPress o ataques que apuntan a archivos PHP. Las extensiones y rutas bloqueadas por defecto son las siguientes. Extensiones bloqueadas:Como el enrutamiento normal de Laravel no usa peticiones con extensión
.php, bloquearlas no afecta al funcionamiento de la aplicación.Usos adecuados e inadecuados para la Hibernation antigua
Usos adecuados
- Entornos de staging y desarrollo: no requieren estar siempre en marcha, por lo que se puede reducir mucho el coste
- Blogs personales o portafolios: usos con poco tráfico
- Apps de demo o prueba: es suficiente con reactivarse solo cuando se necesita
- Herramientas internas de baja frecuencia: horas de uso limitadas
Usos inadecuados
- Usos que emplean tareas programadas:
schedule:runno se ejecuta durante la suspensión - Usos que requieren jobs de cola periódicos: la cola también se detiene durante la suspensión
- Entornos de producción que no admiten latencia de arranque: la reactivación tarda 5–20 s
- Apps que usan WebSocket: la conexión no se mantiene y la suspensión puede retrasarse
En el nuevo Scale to Zero esta restricción se ha relajado. Las Scheduled Tasks se ejecutan automáticamente incluso durante el sleep, y el procesamiento de colas, si se usa Managed Queues, no se ve afectado por la suspensión del App cluster.
Conclusión
En Legacy Flex la Hibernation todavía sirve para reducir costes, pero actualmente Scale to Zero es más práctico.- En Legacy Flex se factura solo por el tiempo activo. Suspensión automática tras el timeout.
- El tiempo de reactivación de la Hibernation antigua es de 5 a 20 s.
- El nuevo Scale to Zero arranca en menos de 500 ms.
- En Scale to Zero, las Scheduled Tasks y las Managed Queues funcionan incluso durante el sleep.
- Con Path Blocking se previenen reactivaciones innecesarias por bots.
- Solo compatible con Flex Compute.
Páginas relacionadas
Programación
Consulta la configuración del Task Scheduler y su funcionamiento en Laravel Cloud.
Colas
Consulta la configuración del Queue Worker y cómo operarlo en Laravel Cloud.
Visión general de Laravel Cloud
Repasa Managed Queues, Scale to Zero y los nuevos planes de precios en conjunto.