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.

Procesamiento lento de enlaces de red.

Estoy utilizando Kinesis data stream como fuente y Elasticsearch como destino. Estoy usando un trabajo de Flink para procesar un poco los datos y luego enviarlos a Elasticsearch.

En el entorno de producción, el flujo de datos de Kinesis puede generar 50,000 eventos por segundo. Se tarda mucho tiempo en procesar los datos. Para procesar 500,000 eventos, tarda cerca de 50 minutos.

La versión de Elasticsearch es 7.7 y está ejecutándose en almacenamiento basado en SSD.

Hay dos nodos de Elasticsearch, con cinco fragmentos y una réplica por fragmento.

El intervalo de actualización es de 1 segundo (por defecto).

Estamos utilizando AWS OpenSearch Elasticsearch.

¿Alguien podría sugerir qué está causando este retraso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Este retraso puede ser causado por varios factores, algunos de los cuales son:

    1. Tiempo de procesamiento del trabajo de Flink: Como los datos están siendo procesados con un trabajo de Flink, el tiempo de procesamiento de este trabajo puede ser un cuello de botella. Es posible que el trabajo de Flink esté tardando demasiado tiempo en procesar y enviar los datos a Elasticsearch, lo que está causando el retraso.
    2. Tiempo de indexación de Elasticsearch: Otro factor que puede causar retraso es el tiempo de indexación en Elasticsearch. Elasticsearch necesita indexar los datos recibidos en fragmentos, y este proceso puede llevar algún tiempo, especialmente si el número de fragmentos es alto.

    3. Problemas de red: Los problemas de red como la latencia y la pérdida de paquetes también pueden afectar la velocidad de transferencia de datos entre Kinesis y Elasticsearch.

    Para optimizar el procesamiento de datos y reducir el retraso, aquí hay algunas posibles soluciones:

    1. Mejore la eficiencia del trabajo de Flink: Optimice el trabajo de Flink mejorando la lógica y los algoritmos utilizados. Use métodos de almacenamiento en búfer apropiados para optimizar la transferencia de datos entre el trabajo y Elasticsearch.

    2. Aumente los recursos de Elasticsearch: Aumente el número de nodos y fragmentos de Elasticsearch, así como los recursos asignados a ellos. Esto mejorará la velocidad de indexación y el procesamiento de datos en general.

    3. Reduzca la latencia de la red: Utilice una conexión de red de alta velocidad con baja latencia entre Kinesis y Elasticsearch. Use una conexión de red dedicada si es posible.

    4. Use el procesamiento por lotes: En lugar de procesar cada evento individualmente, use el procesamiento por lotes para agregar eventos y procesarlos por lotes. Esto puede reducir el número de solicitudes realizadas a Elasticsearch, lo que puede mejorar el rendimiento.

Comments are closed.