es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Límite de la API de Bigquery.

Estoy escribiendo un servicio de Google Cloud Run que contiene un código de Python para transmitir datos a BigQuery. Estoy enviando entre 100k-1M solicitudes por segundo, pero a menudo veo este error:

google.api_core.exceptions.Forbidden: 403 GET
https://bigquery.googleapis.com/bigquery/prettyPrint=false: Exceeded
rate limits

También veo que la instancia de Cloud Run sólo puede tener 300 solicitudes/s.

No entiendo dónde está el cuello de botella:
– En Cloud Run, tengo una concurrencia de 1000 por contenedor.
– No se ha alcanzado la escala automática de max 100 contenedores.
– El código de Python utiliza la biblioteca google-cloud-bigquery y el método TableData.insertAll() tiene una cuota de 10.000 solicitudes por segundo por tabla (https://developers.google.com/bigquery/quota-policy#streaminginserts) ¡Y estoy muy lejos de eso!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Entendiendo los Límites de Tasa y Cuellos de Botella en Google Cloud Run y BigQuery

    Como experto en IT especializado en Google Cloud Platform, Google BigQuery y Google Cloud Run, permítame brindar algunas ideas sobre el problema que está enfrentando.

    Declaración del problema

    Está trabajando en un servicio de Google Cloud Run que transmite datos a BigQuery utilizando código Python. Sin embargo, se encuentra con el error “Exceeded rate limits” con un código de estado prohibido (403) al enviar entre 100k-1M solicitudes por segundo. Además, ha observado que la instancia de Cloud Run solo puede manejar 300 solicitudes/s. A pesar de tener una concurrencia de contenedor de 1000 con autoescalado que no alcanza el límite máximo, y el método TableData.insertAll() posee una cuota mucho más alta que la tasa actual de solicitudes, aún se enfrenta al problema.

    Análisis y sugerencias de solución

    El problema que está enfrentando podría deberse a varios factores, incluidos los límites de cuota de BigQuery, las limitaciones de Cloud Run e incluso la latencia de la red. Aquí hay algunas sugerencias para resolver el problema:

    1. Reduzca la tasa de solicitud: Como está excediendo los límites de tasa de BigQuery, una de las soluciones más simples es reducir la tasa de solicitud para mantenerse dentro de la cuota permitida. Es posible que deba optimizar su código o agrupar sus solicitudes para lograr una tasa más baja.
    2. Vuelva a diseñar su solución: Si necesita manejar la alta tasa de solicitud, puede considerar rediseñar su solución mediante la exploración de otros productos o servicios de GCP. Por ejemplo, puede utilizar Pub/Sub para desacoplar el productor y el consumidor y luego consumir los datos de Pub/Sub a BigQuery con una tasa más manejable.

    3. Optimice su enrutamiento de red: La latencia de la red podría ser un cuello de botella que está causando el problema. Al optimizar su enrutamiento de red, puede disminuir la latencia y mejorar la tasa a la que fluyen los datos desde Cloud Run a BigQuery. Puede considerar la redundancia geográfica o incluso cambiar a otro centro de datos para reducir la latencia.

    4. Configure la asignación de recursos: Por último, puede ajustar la asignación de recursos para su instancia de Cloud Run para optimizar el rendimiento. Puede aumentar la asignación de memoria o CPU en el contenedor, lo que puede mejorar el tiempo de respuesta y la capacidad de rendimiento. Además, puede configurar el número de solicitudes simultáneas que el contenedor puede manejar para minimizar las posibilidades de limitación.

    En conclusión, el problema que está enfrentando podría deberse a varios factores, incluidos los límites de cuota de BigQuery, las limitaciones de Cloud Run y la latencia de la red. No obstante, explorar las soluciones anteriores puede ayudarlo a resolver el problema y permitirle transmitir datos a BigQuery según sus requisitos.

Comments are closed.