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.

Cómo transferir grandes cantidades de datos en menos tiempo desde una tabla de base de datos a Elastic search usando log stash.

Estoy procesando los 500,000 registros de la base de datos Postgres en Elastic mediante Logstash, pero el proceso toma 40 minutos para completarlo. Quiero reducir el tiempo de procesamiento y he cambiado los siguientes valores en el archivo logstash.yml: pipeline.batch.size: 1000, pipeline.batch.delay: 50. También he aumentado el espacio de la heap de 1 GB a 2 GB en el archivo JVM.options, pero aún se siguen procesando los registros en el mismo tiempo.

Archivo de configuración:

“`input {
jdbc {
jdbc_driver_library => "C:\Users\Downloads\elk stack/postgresql-42.3.1.jar"
jdbc_driver_class => "org.postgresql.Driver"
jdbc_connection_string => "jdbc:postgresql://localhost:5432/postgres"
jdbc_user => "postgres"
jdbc_password => "postgres123"
statement => "SELECT * FROM jolap.order_desk_activation"
}
}

output {
elasticsearch {
hosts =>["http://localhost:9200/"]
index => "test-powerbi-transformed"
document_type => "_doc"
}
stdout {}
}“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándose en la información proporcionada, hay algunas cosas que se pueden verificar para mejorar el rendimiento y reducir el tiempo de procesamiento de Logstash al procesar los 500,000 registros de la base de datos de Postgres a Elastic.

    1. Verificar el ancho de banda de la red y la conectividad entre Logstash y Elastic. Una red lenta puede causar demoras en la transferencia de datos, lo cual afecta el tiempo de procesamiento.
    2. Verificar los recursos de hardware, es decir, el procesador, la memoria y el almacenamiento. Recursos de cómputo insuficientes pueden causar problemas de rendimiento.

    3. Verificar la configuración del flujo de Logstash, específicamente las configuraciones de filtro. Reglas de filtrado complejas pueden aumentar el tiempo de procesamiento.

    Además de los cambios realizados en los archivos logstash.yml y JVM.options, se pueden realizar los siguientes cambios para mejorar el tiempo de procesamiento de Logstash:

    1. Aumentar el número de trabajadores estableciendo la opción pipeline.workers en el archivo logstash.yml. Esto permitirá que múltiples hilos procesen eventos en paralelo.
  2. Utilizar un complemento de entrada JDBC que admita el procesamiento por lotes, es decir, se extraen lotes de registros de la base de datos y se procesan en conjunto. Esto puede reducir significativamente el tiempo de procesamiento.

  3. Hacer que Logstash escriba primero en un archivo local y luego utilizar otra instancia de Logstash para cargar los datos en Elasticsearch. Esto puede distribuir la carga de trabajo de procesamiento y reducir el tiempo de procesamiento en general.

  4. Utilizar las API de monitoreo de Logstash para identificar cuellos de botella en el flujo y optimizar las configuraciones en consecuencia.

  5. En general, no existe una solución única para mejorar el rendimiento de Logstash, ya que depende de varios factores, como el volumen de datos, la conectividad de la red, los recursos de hardware y las configuraciones específicas. Sin embargo, al probar diferentes configuraciones y optimizaciones, es posible reducir significativamente el tiempo de procesamiento y mejorar la eficiencia del flujo de Logstash.

Comments are closed.