Cos’è Hibernation
Hibernation (sospensione automatica) di Laravel Cloud è la vecchia funzionalità che manda l’ambiente in stato sospeso quando non riceve richieste HTTP per un certo periodo.Nel nuovo Flex compute attuale, il Scale to Zero più veloce viene usato come suo successore. L’Hibernation di Legacy Flex permette di interrompere la fatturazione del compute durante la sospensione, ma il ripristino dopo una richiesta HTTP richiede tipicamente 5-20 secondi. Con il nuovo Scale to Zero l’avvio è ridotto a meno di 500ms e, anche durante lo sleep, l’ambiente si avvia automaticamente per task pianificati ed elaborazione della coda.
Cosa cambia con Scale to Zero
Con Scale to Zero del nuovo Flex compute, molti dei problemi del vecchio Hibernation sono risolti.| Aspetto | Vecchio Hibernation | Nuovo Scale to Zero |
|---|---|---|
| Ripristino su richiesta HTTP | 5-20 secondi | Meno di 500ms |
| Scheduled Tasks | Non gira durante la sospensione | Si avvia ed esegue automaticamente anche durante lo sleep |
| Elaborazione code | Non gira durante la sospensione | Si avvia automaticamente durante lo sleep. È consigliato l’uso di Managed Queues |
| Uso raccomandato | Risparmio in vecchi ambienti Flex | Configurazione standard attuale |
Il vecchio Hibernation aveva il problema che, durante la sospensione, task schedulati e coda non giravano. Scale to Zero risolve questo aspetto e, per l’elaborazione della coda, con Managed Queues si può proseguire in sicurezza anche mentre l’App cluster dorme.
Procedura di abilitazione del vecchio Hibernation
Apri l'App compute cluster
Nella dashboard del canvas infrastrutturale dell’ambiente, clicca l’App compute cluster.
Limitazioni durante la sospensione del vecchio Hibernation
Quando Hibernation è abilitato e l’ambiente è sospeso, le funzionalità seguenti non funzionano.| Funzionalità | Comportamento durante la sospensione |
|---|---|
| Elaborazione richieste HTTP | Interrotta (viene elaborata dopo il ripristino) |
| Task Scheduler | Non eseguito |
| Queue Worker | Non eseguito |
| Processi in background personalizzati | Non eseguiti |
Al ripristino dalla sospensione, queste elaborazioni riprendono automaticamente. Tuttavia, i job pianificati che “sarebbero dovuti arrivare” durante la sospensione non vengono eseguiti a ritroso.
- La sospensione è possibile solo su Flex compute. Su Pro compute non si può abilitare Hibernation.
- La sospensione avviene a livello di ambiente. Se il cluster App si sospende, si sospendono anche tutti i Worker cluster nello stesso ambiente.
Cause di ripristino non desiderato
Se arriva una richiesta HTTP, l’ambiente si ripristina automaticamente, ma il ripristino può accadere anche per richieste non intenzionali.- Bot e crawler — motori di ricerca e scanner di sicurezza che effettuano crawl automatici delle pagine
- Anteprime link di Slack o Teams — le app di messaggistica accedono per recuperare la thumbnail del link
- Scansioni WordPress — scansioni automatiche che cercano ambienti WordPress accedendo per esempio a
/wp-admin - Attacchi che cercano file
.php— scansioni automatiche che puntano direttamente ai file PHP
*.laravel.cloud di Laravel Cloud viene aggiunto l’header X-Robots-Tag: noindex, nofollow per evitare l’indicizzazione, ma una volta scoperto il dominio non può essere impedito del tutto. Sui domini personalizzati l’header noindex non viene aggiunto.
Prevenire i ripristini inutili con Path Blocking
Path Blocking è una funzionalità che, per richieste su determinate estensioni o percorsi, le blocca senza elaborarle mantenendo lo stato di sospensione. Impedisce risvegli inutili dovuti a scansioni WordPress o attacchi verso file PHP. Estensioni e percorsi bloccati per impostazione predefinita sono i seguenti. Estensioni bloccate:Il normale routing di Laravel non usa richieste con estensione
.php, quindi bloccarle non ha effetti sul funzionamento dell’app.Usi adatti e non adatti al vecchio Hibernation
Usi adatti
- Ambienti di staging e sviluppo — non serve la disponibilità continua, si abbattono molto i costi
- Blog personali e portfolio — usi con traffico limitato
- App demo o di test — è sufficiente il ripristino solo quando serve
- Strumenti interni a bassa frequenza — orari di utilizzo limitati
Usi non adatti
- Usi con task scheduling — durante la sospensione
schedule:runnon gira - Usi che richiedono job in coda periodici — durante la sospensione anche la coda si ferma
- Ambienti di produzione che non tollerano latenza di avvio — il ripristino richiede 5-20 secondi
- App che usano WebSocket — la connessione non può essere mantenuta e la sospensione può essere ritardata
Con il nuovo Scale to Zero questi vincoli sono attenuati. Gli Scheduled Tasks vengono eseguiti automaticamente anche durante lo sleep e l’elaborazione della coda, con Managed Queues, non risente della sospensione dell’App cluster.
Conclusioni
Hibernation può ancora servire a contenere i costi in Legacy Flex, ma oggi Scale to Zero è più pratico.- In Legacy Flex si paga solo il tempo attivo. La sospensione automatica avviene dopo il timeout.
- Il tempo di ripristino del vecchio Hibernation è 5-20 secondi.
- Il nuovo Scale to Zero si avvia in meno di 500ms.
- Con Scale to Zero, Scheduled Tasks e Managed Queues funzionano anche durante lo sleep.
- Path Blocking previene ripristini inutili causati dai bot.
- Supportato solo su Flex compute.
Pagine correlate
Scheduling
Verifica la configurazione del Task Scheduler e il comportamento su Laravel Cloud.
Code
Verifica la configurazione del Queue Worker e il funzionamento in Laravel Cloud.
Panoramica di Laravel Cloud
Riassunto di Managed Queues, Scale to Zero e nuovi piani tariffari.