Perché il caricamento delle mie app Heroku di base richiede due secondi?


100

Ho creato due app Heroku molto semplici per testare il servizio, ma spesso ci vogliono diversi secondi per caricare la pagina quando le visito per la prima volta:

Tutto quello che ho fatto è stato creare una semplice app Sinatra e distribuirla. Non ho fatto nulla per pasticciare o testare i server Heroku. Cosa posso fare per migliorare i tempi di risposta? È molto lento in questo momento e non sono sicuro da dove cominciare. Il codice per i progetti è su GitHub se questo aiuta.

Risposte:


176
  • Se la tua applicazione è inutilizzata per un po ', viene scaricata (dalla memoria del server).
  • Al primo colpo viene caricato e rimane caricato fino a quando non passa un po 'di tempo senza che nessuno vi acceda.

Questo viene fatto per salvare le risorse del server. Se nessuno usa la tua app, perché tenere occupate le risorse e non lasciare che qualcuno che ne ha davvero bisogno le utilizzi?
Se la tua app ha molto traffico continuo, non verrà mai scaricata.

C'è una nota ufficiale su questo.


51
Il modo più semplice per risolvere questo problema è aumentare il tuo dinamometro a 2.
Chap

5
@diegopau Ho trovato una bella app ( wekkars.com ) che fa esattamente quello che ti serve. Per il momento sembra essere in beta ma qui funziona perfettamente.
SteenhouwerD

68
Fare il ping al tuo server per evitare che sia inattivo è una schifezza nel tuo nido. Questi servizi di cui parli sono gratuiti . Hanno bisogno di risparmiare risorse. Se tutti eseguono il ping del proprio server, nessuno viene sostituito e il provider deve aumentare le proprie prestazioni. Questo costa denaro ... addio servizio gratuito. Penso che il poster di questa risposta dovrebbe eliminare il suggerimento di eseguire il ping del server.
GreenAsJade

32
Uso uptimerobot.com per eseguire il ping della mia app Heroku gratuitamente ogni 5 minuti - mi dice che ho un 200OK (e ancora più importante quando non lo faccio) e mantiene l'app reattiva. Non mi scuso per questo; Ho 10 app heroku, la maggior parte delle quali sono app di sviluppo o demo, ma questa in particolare è live / di produzione e nonostante il traffico ridotto deve rispondere rapidamente quando richiesto. Se questa fosse una minaccia per il modello di business di Heroku, ci impedirebbero di farlo. Quando avrò migliaia di utenti globali, farò girare un altro banco prova e inizierò a pagare per quello che è un ottimo servizio. Quindi smettila con la cosa del senso di colpa! :)
ED-209

3
Sono con Tokn. In che modo le nuove app dovrebbero attirare gli utenti se il sito si carica così lentamente che se ne vanno prima che sia attivo?
Deborah

14

Potresti anche voler esaminare le opzioni di memorizzazione nella cache che hai su Heroku con Varnish e Memcached. Questi sono persistenti indipendentemente dalle dinamiche.

Ad esempio, se si dispone di una home page immutabile, è possibile memorizzarla nella cache per periodi prolungati in Varnish aggiungendo intestazioni Cache-Control alla risposta. Quindi i tuoi utenti non sperimenteranno l'hit di carico finché non vorranno "fare qualcosa" invece di quando arrivano.


4

Dovresti controllare la risposta di Tom Robinson a "Scalabilità: come funziona Heroku?" su Quora: http://www.quora.com/Scalability/How-does-Heroku-work

Heroku suddivide le risorse del server tra molti clienti / applicazioni differenti. Alla tua app sono assegnati blocchi di potenza di calcolo. Partizioni Heroku basate sulla richiesta di risorse. Quando si dispone di un'applicazione popolare che richiede più potenza, è possibile pagare per più "dynos" (contenitori di applicazioni) e quindi ottenere in cambio una fetta più grande della torta.

Nel tuo caso, però, stai eseguendo un'app gratuita che poche persone, se non nessuna al di fuori di te, stanno visitando / utilizzando. Pertanto, Heroku riduce le risorse che ottieni scaricando la tua app, mettendola essenzialmente in ibernazione, finché non viene effettuata una richiesta al tuo indirizzo. Quando ciò accade e la tua app è rimasta inattiva per molto tempo, ci vuole tempo per ricaricarla.

Aggiungi 1 dyno extra per evitare che la tua app si addormenti, se il tempo di ricarica è importante.


3

Sto avendo lo stesso problema. Ho distribuito un'app Rails 3 (1.9.2) la scorsa notte ed è lenta. So che 1.9.2 / Rails 3 è in BETA su Heroku ma il ticket di supporto diceva che dovrebbe andare bene usando alcune istruzioni che mi hanno inviato.

Capisco che la prima richiesta dopo molto tempo richieda più tempo. Ha senso. Ma il semplice caricamento di pagine che non si collegano nemmeno a un DB che impiegano 10 secondi a volte è piuttosto brutto.

Ad ogni modo, potresti provare quello che ho intenzione di fare. Questo è il profilo della mia app e guarda quanto tempo ci vuole a livello locale. Se ci vogliono 400 ms allora qualcosa non va. Ma se ottengo 50 ms localmente e ci vogliono ancora 10 secondi su Heroku, qualcosa è decisamente sbagliato.

Ovviamente, il caching aiuta ma ottieni solo 5 MB gratuitamente e ancora una volta, con UNA persona che utilizza il sito, non dovrebbe essere così lento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.