2012-03-08 12 views
5

I risultati del test con 1000 utenti saranno simili a quelli che ottengo con 10.000 utenti? Un aumento di 10 volte nell'utilizzo di memcache cambierà i risultati che ottengo, se anche 10x istanze sono in esecuzione?Il mio App Engine Memcache limiterà la scala con la mia app?

Ho usato memcache per un sacco di cose e ha funzionato benissimo. Ora, voglio aggiungere ALTRO, memorizzando i risultati di diverse query chiave. Le query sono diverse per ogni utente e al momento ho migliaia di utenti alla settimana.

Sono diffidente nei confronti di questa strategia. Potrei passare un po 'di tempo a implementarlo e scoprire che per i miei mille utenti funziona alla grande. Ma, ad esempio, il mio sito cresce in popolarità e improvvisamente ho 10.000 utenti. Vedrò una diminuzione delle prestazioni di memcache?

Sono preoccupato per un calo molto drastico. Potrei immaginare che ci sia un limite invisibile, come 1 GB di dati memcache che posso usare. All'improvviso, con un aumento di utilizzo di 10 volte, potrei superare quel limite e vedere una grande quantità di thrashing o qualcosa del genere.

Questo sembra molto difficile da testare per un cliente: mi piacerebbe un commento da un membro di App Engine.

Grazie per qualsiasi intuizione!

+0

domanda simile è qui: http://stackoverflow.com/questions/2175586/how-much-memory-of-memcache-is-available-to-a-google-app-engine-account la risposta è un po 'vago, ma l'idea generale è che la quantità di memoria memcache scala. –

+0

Ah, grazie per avermi indicato lì.Immagino che lo prendo! ;) –

risposta

2

I componenti interni dell'implementazione di Memcache su GAE sono noti solo a Google, pertanto non è facile ottenere tali risposte su un sito pubblico generale.

Ma lasciatemi ipotizzare: se dai un'occhiata al nuovo Python NDB API vedrai che per impostazione predefinita TUTTI i datasore vengono memorizzati nella cache (parzialmente) in memcache. Quindi, se Google lo sta facendo per impostazione predefinita su larga scala, suppongo che si siano assicurati che memcache sia scalabile.

EDIT:

Inoltre, GAE sessions utilizzare anche Memcache di memorizzare nella cache i dati della sessione di default, il che significa tutte le applicazioni che utilizzano le sessioni (= maggior parte delle applicazioni Web) usa anche Memcache su larga scala.

0

Si può sempre fingere una memcache scrivendo dati serializzati al blobstore ...

0

App Engine memcache scalerà tanto quanto si vuole a patto che non si dispone di tasti di scelta rapida.

Mentre si scala, è necessario passare dalla memcache condivisa alla memcache dedicata, acquistata in unità da 1 GB per uso esclusivo.

Oltre a ottenere la giusta quantità di memoria, è inoltre necessario assicurarsi di disporre di memcache sufficiente per gestire il carico. Come descritto nello App Engine memcache docs, ogni GB di memcache può supportare circa 10k operazioni chiave al secondo, se l'elemento ha una dimensione di circa 1 kB.

L'unica cosa che può davvero limitare il ridimensionamento è i tasti di scelta rapida. Il 10k keyops/s per GB si applica solo se si ha una distribuzione uniforme delle chiavi. Se si dispone di un numero limitato di chiavi con una quantità sproporzionata del traffico, possono superare la capacità di parte del sistema di back-end. La sezione del visualizzatore di memcache nell'Admin Console mostrerà i tuoi migliori tasti per aiutarti a diagnosticare i tasti di scelta rapida.

Problemi correlati