2010-03-19 10 views
12

Actualmente tengo unos 650,000 elementos en memcached (se usa 430MB de memoria) y el número sigue en aumento. Se espera que exceda 1,000,000 de artículos antes de ir al piso. La proporción de aciertos/faltas actual es de 25: 1, por lo que la eficiencia es bastante buena. Solo quería preguntar ¿hay un millón de elementos en memcached en un solo servidor? Si no, ¿cuántos son demasiados?¿Cuántas teclas hay demasiadas en memcached?

+1

Puede agregar otro servidor e instalar Memcache en él y distribuirlo. Es la belleza de eso, entonces no tendrás que preocuparte por esto. – DarthVader

+1

¿Ves? Si memcached es lo suficientemente bueno para granjas de servidores como el deathstar, es lo suficientemente bueno para ti. – Xeoncross

Respuesta

5

Puede escalar hasta a un único servidor de 64 bits con 48 GB y colocar hasta 80,000,000 de elementos en él. O bien, puede escalar fuera de y comprar muchos servidores de 4GB y poner hasta 2,400,000 artículos en cada uno. Memcached funciona maravillosamente bien cuando lo distribuye en varios servidores.

+0

@Jim, gracias por su respuesta, ¿así que 2,400,000 es la cantidad máxima de artículos que Memcached puede almacenar en una caja de 4GB? – jack

+0

Disculpe, es una estimación aproximada basada en sus 650k artículos actuales en 430MB. Pero 1m de artículos está muy por debajo del máximo para esa máquina. Tendrá que considerar lo que ocurre cuando el * volumen * de acceso a la memoria caché aumenta (¿la CPU o la red se convierten en un cuello de botella?) Y también lo que sucede si la máquina con memoria caché se cae. Incluso si una sola máquina puede manejar la caché y la carga, es posible que necesite dos o más para admitir la conmutación por error para su aplicación. –

2

"Demasiados" es, sin embargo, muchos de los que tiene cuando se queda sin memoria para dedicar a memcached.

Los datos se almacenan en una tabla hash gigante, haciendo búsquedas muy cerca de O (1). A medida que crece una tabla hash, las colisiones teóricamente aumentan, pero las implementaciones de buena calidad (y adecuadas para memca) del concepto de tabla hash generalmente incluyen amplios medios para ayudar a lidiar con esto con muy poca desaceleración.

+0

¿No son tablas hash O (log (n))? – user1130176

+0

@ user1130176 No en el caso promedio, no. El comportamiento de O (log (n)) de una tabla de hash putativa sugeriría una implementación rota o mal aplicada. Es posible que esté pensando en alguna otra estructura que también se utilice comúnmente para implementar matrices asociativas, p. alguna forma de árbol –

+0

La única manera de obtener tiempo constante sería alguna función determinista, uno a uno, desde la clave al índice de acceso aleatorio, ¿verdad, es eso lo que hace memcached? ¿Cómo podría atravesar 100M registros en O (1) vez? Me encantaría aprender cómo se hace esto. – user1130176

Cuestiones relacionadas