5

Abbiamo una terribile esperienza con gae go. Quando la nostra app era gratuita, non abbiamo mai avuto problemi con il limite di memoria privata limitata superata. Abbiamo raggiunto quota, quindi abbiamo deciso di pagare. Il nostro budget giornaliero è impostato su $ 3. Dopo l'attivazione del servizio a pagamento, siamo stati in grado di utilizzare nuovamente il sito e l'eccesso di quota è andato via. Poche ore dopo, abbiamo ottenuto il limite di memoria privata limitata superato e non è stato più possibile visualizzare altro. Ho provato a cancellare alcuni big data in datastore, disabilitare i built-in e ancora senza fortuna.Limite di memoria privata limitato superato

Ho fatto qualche prova nel codice per capire da dove proviene l'errore. Rimuovendo il codice di accesso al datastore, il sito è stato resuscitato. Quindi la mia conclusione è accedere a datastore anche solo per recuperare pochissime entità che avrebbero sollevato un errore come questo. Siamo un po 'senza speranza. Abbiamo optato per utilizzare appspot per sfruttare la tecnologia, ma otteniamo questo e non possiamo passare allo sviluppo.

Di seguito è riportato solo il codice che genera questo tipo di errore.

q := datastore.NewQuery("Course") 
    courses := make([]courseData, 0) 
    if keys, err := q.GetAll(c, &courses); err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
     return 
    } else { 
     for i := range courses {     
      courses[i].Key = keys[i] 
     }       
    } 

Qualsiasi aiuto che potreste estendere a noi sarebbe molto apprezzato. Grazie in anticipo.

+3

disclaimer, non usare gae. Ma, quanto sopra solleva la domanda, quanti corsi ci sono? Quanti dati ci sono in ogni corso? – dskinner

+2

Hai profilato la tua app per vedere dove viene consumata la memoria? Tutte le istanze hanno una quantità limitata di memoria (F1 - 128 MB) se si va e si preleva un'enorme quantità di dati, naturalmente si spegneranno i limiti di memoria. –

+0

A meno che non abbiate bisogno di tutti i corsi contemporaneamente, forse provare a ripetere i risultati della query anziché utilizzare GetAll()? –

risposta

3

Nella mia esperienza, questo messaggio indica in genere che le istanze utilizzano più memoria di quella supportata dalla classe istanza. Se si inizia a ricevere l'aggiornamento di questo messaggio alla successiva classe di istanza (F2, ecc.) E vedere se va via. Questa è una modifica che si esegue nel file di configurazione del modulo (utilizzato nella console di gestione nella sezione Impostazioni delle applicazioni). Molto probabilmente il problema andrà via, a meno che ovviamente non si stia utilizzando più memoria di quanto la prossima classe possa supportare.

A differenza di altre risorse che si adattano automaticamente ai limiti di budget, la RAM non lo è; se una richiesta fa sì che un'istanza superi il limite di RAM della sua classe di istanza, l'istanza viene terminata alla fine della richiesta e questo messaggio viene registrato.

Problemi correlati