2009-12-06 15 views
16

Ho creato un sito Web Hello World in Google App Engine. Sta usando Django 1.1 senza patch.Applicazione Google App Engine Estremamente lenta

Anche se si tratta solo di una pagina web molto semplice, ci vuole molto tempo e spesso va in timeout.

Qualche suggerimento per risolvere questo problema?

Nota: risponde rapidamente dopo la prima chiamata.

+2

questo è stato discusso in un recente post sul gruppo appengine: http://groups.google.com/group/google-appengine/browse_thread/thread/22692895421825cb Viene discusso anche il problema con il ping, che probabilmente porterà a una riduzione e timeout delle app più brevi come google e i pinger escalation. –

risposta

14

Questo è un suggerimento orribile, ma io farò lo stesso:

costruire un piccolo un'applicazione client o semplicemente usare wget con cron per accedere periodicamente la vostra applicazione, forse una volta ogni 5 minuti o giù di lì. Questo dovrebbe impedire a Google di metterlo in uno stato dormiente.

dico che questo è un suggerimento orribile perché è uno spreco di risorse e un abuso di un servizio gratuito di Google. Mi aspetto che lo faccia solo durante una breve fase di test/avvio.

+1

Ho trovato che le richieste provenienti da diversi IP non sono necessariamente riscaldate l'una dall'altra .. dipende da quale parte della web farm di G hai colpito ... il la sessione sembra essere appiccicosa per un dato IP anche se – HaveAGuess

4

Se si tratta di rispondere rapidamente dopo la prima richiesta, è probabilmente solo un caso di ottenere il relativo processo attivo e funzionante. Certo, è leggermente sorprendente che ci voglia così tanto tempo che scada. È dopo aver aggiornato l'applicazione e verificato che il dashboard AppEngine lo mostra pronto?

"Primo colpo lentezza" è abbastanza comune in molte framework web. È un po 'un dolore durante lo sviluppo, ma non è un problema per la produzione.

+0

Posso confermare che questo è successo anche a me. Sembra che AppEngine metta in stop la tua applicazione se non è acceduta e avvia un laborioso processo per riattivarlo prima. Ho sperimentato timeout su un'app altrimenti funzionale. Una volta che Dondon ha il suo primo milione di utenti, questo non sarà più un problema :) –

3

Incontro lo stesso con l'app basata su tralicci. Ho il server di paging iniziale come statico e ho una chiamata ajax fittizia al suo interno per portare l'app in alto, prima che l'utente digiti le credenziali. Di solito è sufficiente per evitare una lunga risposta ... Solo un'idea che potresti usare prima di avere effettivamente un milione di utenti;).

4

Un altro suggerimento che potrebbe aumentare il tempo di risposta.

attivazione di fatturazione fa aumentare le quote, e, per la mia esperienza personale, aumentare la risposta complessiva della domanda pure. Probabilmente a causa della maggiore priorità per le applicazioni abilitate alla fatturazione di google. Ad esempio, un'app con fatturazione disattivata può inviare fino a 5-10 email/richiesta, un'app con fatturazione attivata gestisce facilmente 200 email/richiesta.

Basta essere sicuri di impostare i livelli bassi di fatturazione - non si sa mai quando Slashdot, Digg o HackerNews accorge tuo sito :)

7

Per riassumere this thread finora:

  • inizia a freddo richiedono molto tempo
  • Google scoraggia il ping app per tenerli al caldo, ma la gente non si conosce l'alternativa
  • C'è an issue filed a pagare per un'istanza caldo (del Java)
  • 01.235.164,106 mila
  • C'è il numero an issue filed per Python. Tra l'altro, i file .py non sono precompilati.
  • Alcune app sono interessate in modo sproporzionato (impossibile trovare il riferimento o il problema con Google Gruppi)
  • March 2009 thread about Python dice < 1s (!)

Vedo meno parlare di Python su questo problema.

+1

È una lamentela comune con Python quando è coinvolto Django. L'enorme quantità di materiale importato non funziona bene con un sistema in cui le istanze vengono scaricate così frequentemente. – geoffspear

3

Ho usato pingdom per ovvi motivi: nessuna partenza a freddo è un bonus. Naturalmente i clienti arriveranno presto e sarà un problema senza numero

19

Ora Google ha aggiunto un'opzione di pagamento "Sempre attiva" che è 0,30 $ al giorno.

Utilizzando questa funzione, l'applicazione non dovrà più essere avviata a freddo.

Always On

Mentre le richieste di riscaldamento e aiutare il vostro scala applicazione senza intoppi, che fanno non aiutano se l'applicazione ha ben basse quantità di traffico. Per le applicazioni ad alta priorità con traffico basso , è possibile prenotare le istanze tramite la funzione Sempre attiva di App. .

Always On è Funzione Premium che riserve tre istanze della propria applicazione , mai disattivandoli, anche se l'applicazione non ha alcun traffico . Ciò attenua l'impatto delle richieste di caricamento sulle applicazioni che hanno quantità piccole o variabili di traffico . Inoltre, se un'istanza Always On muore accidentalmente, l'App Engine riavvia automaticamente l'istanza con una richiesta di riscaldamento. Di conseguenza, le applicazioni Always On devono essere sicure di per eseguire la stessa inizializzazione di possibile durante le richieste di riscaldamento.

Anche dopo l'attivazione di Sempre attiva, l'applicazione può riscontrare il caricamento delle richieste in caso di aumento improvviso dello nel traffico.

per attivare sempre, andare alla pagina di fatturazione Impostazioni nel Admin Console dell'applicazione e fare clic sul Always On casella di controllo.

http://code.google.com/intl/de-DE/appengine/docs/adminconsole/instances.html

1

Si consiglia di provare CloudUp. Periodicamente esegue il ping delle app di google per mantenerle attive. È gratuito e puoi aggiungere tutte le app che vuoi. Supporta anche azure e heroku.