Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

229
Vistas
Firebase Cloud Functions (tabla de clasificación y tiempo de espera de más de 10 000 usuarios)

Mi aplicación tiene una tabla de clasificación que se actualiza diariamente con una función de Firebase. Ahora tengo más de 20.000 usuarios y la función se agota siempre (ya durante 550 segundos).

 exports.scheduledFunction = functions.pubsub.schedule('every day 00:00').timeZone('Europe/Vienna').onRun( async (contextm) => { functions.logger.log('Positioning stated... (v.1.0.5)'); batch = db.batch(); const allUsers = await db.collection('users').orderBy('coins', 'desc').get(); let i = 0; for (const doc of allUsers.docs) { batch.update(doc.ref, "rank", i); i += 1; if(i % 499 == 0) { await batch.commit(); batch = db.batch(); } } const writeResult = await batch.commit(); functions.logger.log('Updating Leaderboard'); return null; });

¿Cómo optimizar en términos de rendimiento?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No hay nada que puedas hacer para mejorar la situación en términos de rendimiento. La velocidad de ejecución de su código depende del rendimiento de Firestore. Las operaciones de Firestore siempre tardarán lo que tarden, no se pueden acelerar.

Las únicas alternativas que tienes dentro de GCP son:

  1. Divida el problema en problemas más pequeños y resuelva cada problema más pequeño en su propia función de invocación.
  2. Use un producto de backend diferente que no sea Cloud Functions (ya que no está diseñado para operaciones de ejecución prolongada).

Para el n.° 1, puede activar otras funciones pubsub para manejar lotes de usuarios de forma asíncrona desde la función principal. Tendrá que empaquetar una carga útil de datos para que funcione la función de delegado, de modo que no tenga que repetir la primera consulta. Cada invocación de delegado puede actualizar los documentos en su propia cantidad de tiempo más predecible (ya que limitará el tamaño de cada lote).

Para el n.° 2, podría usar Cloud Run, que le brinda hasta 60 minutos de tiempo por invocación. O podría configurar una instancia de Compute Engine, que se ejecutaría las 24 horas del día, los 7 días de la semana, y escribiría código para invocar un punto final expuesto en su función programada.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si maximizó sus opciones de tiempo de ejecución a 540 segundos y 8 GB de memoria, su única solución (puedo recomendarla) sería ejecutar ese código en un backend confiable con el SDK de administrador de Firebase. Así es como recalculamos todos los días nuestras existencias en almacén. Tarda unos 30 minutos, por lo que no se puede ejecutar en una función de nube de Firebase.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda