2012-03-08 6 views
5

¿Los resultados de las pruebas con 1000 usuarios serán similares a los que obtengo con 10,000 usuarios? ¿Un aumento de 10 veces en el uso de Memcache cambia los resultados que obtengo si también tengo 10 veces instaladas las instancias?¿Limitará mi App Engine Memcache la escala con mi aplicación?

He estado usando Memcache para muchas cosas, y ha estado funcionando muy bien. Ahora, quiero poner MÁS en él, almacenando en caché los resultados de varias consultas clave. Las consultas son diferentes para cada usuario, y tengo mil usuarios por semana en este momento.

Soy cauteloso con esta estrategia. Podría pasar un tiempo implementando esto y descubrir que para mis mil usuarios funciona de maravilla. Pero, digamos que mi sitio crece en popularidad, y de repente tengo 10,000 usuarios. ¿Vere una disminución en el rendimiento de Memcache?

Me preocupa una disminución muy drástica. Puedo imaginar que hay un límite invisible, como 1GB de datos de Memcache que puedo usar. De repente, con un aumento de 10 veces en el uso, podría haber superado ese límite y ver una gran cantidad de golpes o algo así.

Esto parece muy difícil de probar para un cliente: me encantaría un comentario de un experto de App Engine.

¡Gracias por cualquier idea!

+0

Pregunta similar está aquí: http://stackoverflow.com/questions/2175586/how-much-memory-of-memcache-is-available-to-a-google-app-engine-account la respuesta es un poco vago, pero la idea general es que la cantidad de capacidad de Memcache aumenta. –

+0

Ah, gracias por señalarme allí.¡Supongo que lo tomaré! ;) –

Respuesta

2

Las funciones internas de la implementación de Memcache en GAE solo las conoce Google, por lo que es poco probable que se hagan tales preguntas en un sitio público general para obtener respuestas definitivas.

Pero permítanme especular: si echa un vistazo a la nueva Python NDB API, verá que de forma predeterminada TODOS los datos que se obtiene se almacenan en caché (parcialmente) en Memcache. Entonces, si Google lo hace de manera predeterminada a gran escala, entonces supongo que se aseguraron de que Memcache sea escalable.

EDIT:

Además, GAE sessions utilizan también Memcache para almacenar en caché los datos de sesión de forma predeterminada, lo que significa que todas las aplicaciones que utilizan sesiones (= la mayoría de aplicaciones Web) también utilizan Memcache en gran escala.

0

siempre se puede falsificar un Memcache escribiendo datos serializados en el almacén de blob ...

0

App Engine Memcache escalará tanto como usted desee, siempre y cuando no se tiene teclas de acceso rápido.

A medida que amplíe, tendrá que pasar de Memcache compartido a Memcache dedicado, que compra en unidades de 1 GB para su uso exclusivo.

Además de obtener la cantidad correcta de memoria, también deberá asegurarse de tener suficiente memoria para manejar la carga. Como se describe en App Engine memcache docs, cada GB de Memcache puede admitir aproximadamente 10k operaciones de teclas/segundo, si el elemento tiene un tamaño de aproximadamente 1 kB.

Lo único que realmente puede limitar su escala es teclas de acceso rápido. Los 10k keyop/s por GB solo se aplican si tiene una distribución pareja de claves. Si tiene un número pequeño de claves con una cantidad desproporcionada del tráfico, entonces pueden exceder la capacidad de parte del sistema de back-end. La sección del visor de Memcache en la Consola de administración mostrará las teclas superiores para ayudarlo a diagnosticar las teclas de acceso rápido.

Cuestiones relacionadas