Caso de éxito MongoDB: Foursquare
Por Lillian Domínguez
Foursquare (https://foursquare.com/) es una red social que te permite hacer registrar o “check in” del lugar en donde te encuentres, es muy popular en Estados Unidos, Brasil y México.
Después de realizar una evaluación al sistema tomaron la decisión de migrar su administrador de base de datos de Prostgress a Mongo DB.
Véamos algunos datos de interés:
- Foursquare tiene 15 millones de usuarios, >1 billón de Check In’s
- Tráfico de pico: Concurrentemente ~2500 HTTP QPS Overall, ~80 Check-in’s por segundo
- 8 Cluster de Mongo DB en producción
- 8 fragmentos de usuarios, 12 fragmentos de Check-ins
- Checkins: ~80 Inserciones/seg, ~2.5 ops/seg, 45MB/s Salidas en pico
Algunos hechos:
- Todos los servidores corren en EC2
- Mongo S (Mongo Shard) son colocados con AppServers, 1:1
- Mongo Cs (Mongo Drivers) compartido en 3 Instancias
- Mongo D (Mongo deamon) trabajando en un conjunto contenido en RAM
- Configuración para MongoD en almacén de respaldo: Volúmenes 4 EBS con RAID0.
La problemática:
- La Fragmentación se infla.
Al modificarse los datos Con el tiempo, la huella de Mongo D RAM crece loos nodos de la página del disco y el rendimiento del sitio sufre.
Solución: La Orden replicaset por datSize + IndexSize, Uptime DESC. –Reparar los nodos secundarios uno a la vez. Los nodos primarios requieren stepdown() los cuáles son más delicados.
La problemática:
2. Ejecución del EBS degradado
Síntomas:
Ioutil % en un volumen > 90
Qr/qw counts spike
Tasa de fallas > 10 en mongostat
Algunas veces: tcploss counts spike
Solución: Detener el proceso de Mongo D sí es nodo secundario, Stepdown() + Parar sí es el primario. Reconstruir desde cero.
Las problemática:
3. Recientemente Mongo D no ha buscado en todos los datos.
Solución:
Db.checkins.find({unused_key:1}).explain()
Db.checkins.find({unused_key:1}).hint ({random_index: 1}).explain()
Cat > /dev/null trabaja demasiado, a menos que el tamaño del conjunto de datos es más grande que la memoria RAM.
He aquí la presentación completa:
Por Cooper Bethea. Site Reliability Engineer, Foursquare.
Cónoce más sobre Mongo DB
Próximo webinar de Mongo DB: Análisis de costo de propiedad para MongoDB. Enero 17 11:00am PST / 2:00pm EST / 7:00pm UTC http://www.10gen.com/events/webinar/tco-mongodb-vs-oracle