logstash-peformance

logstash-peformance

  1. logstash 是流式处理的中间件,检查上游和下游的性能,Logstash只能以其输入和输出目的地的速度消耗和生成数据!
  2. 收集系统信息:

    1. cpu:注意CPU是否被重度使用,在Linux / Unix上,可以运行top -H以查看由线程分解的进程统计信息以及总CPU统计信息。如果cpu使用率很高,要看看是否JVM频繁GC导致。
    2. memory: 注意Logstash在JVM上运行。这意味着Logstash将始终使用分配给它的最大内存量。寻找使用大量内存的其他应用程序,如果应用程序使用的总内存超过物理内存,可能导致Logstash交换到磁盘。
    3. I/O:
      1. 监视磁盘I / O以检查磁盘饱和度。如果使用可能会使存储饱和的Logstash插件(例如文件输出),则可能会发生磁盘饱和。如果遇到大量错误迫使Logstash生成大错误日志,也会发生磁盘饱和。在Linux上,可以使用iostat,dstat或类似的东西来监视磁盘I / O.
        2.监视网络I / O以确定网络饱和。如果使用执行大量网络操作的输入/输出,则可能会发生网络饱和。在Linux上,可以使用dstat或iftop等工具来监控网络。
  3. 检查JVM堆

    1. 如果堆大小太小,会导致JVM不断地收集垃圾.CPU利用率通常会很高。jstat可以帮助观测GC情况。
    2. 检查此问题的一种快速方法是将堆大小加倍并查看性能是否有所提高。不要增加堆大小超过物理内存量。为操作系统和其他进程留出至少1GB的空闲空间。
    3. 使用jmap或VisualVM 来更准确地观测JVM堆使用状况,或者dump堆深入分析。
    4. 确保将最小(Xms)和最大(Xmx)堆分配大小设置为相同的值,以防止堆在运行时调整大小,这是一个非常昂贵的过程。
  4. Logstash worker设置:
    1. 使用-w标志扩展管道工作者的数量。这将增加可用于过滤器和输出的线程数。
    2. 还可以调整输出批量大小。对于许多输出,例如Elasticsearch输出,此设置将对应于I / O操作的大小。对于Elasticsearch输出,此设置对应于批量大小。

logstash 性能相关配置调整

Logstash提供了以下配置选项调整管道性能:

  • pipeline.workers: 执行filter和output的并发线程数,如果cpu未到极限,考虑增加此参数的值以更好地利用可用的处理能力。对于IO密集型的可以将参数设置超出cpu核心数。
  • pipeline.batch.size:定义了单个工作线程在尝试执行过滤器和输出之前收集的最大事件数。较大的批量大小通常更有效,但会增加内存开销。某些硬件配置要求您在jvm.options配置文件中增加JVM堆空间以避免性能下降。超出最佳范围的值会导致性能下降,因为频繁的垃圾回收或与内存不足异常相关的JVM崩溃。输出插件可以将每个批处理作为逻辑单元。例如,Elasticsearch输出会为收到的每个批次发出批量请求。调整pipeline.batch.size 设置调整发送到Elasticsearch的批量请求的大小。
  • pipeline.batch.delay:很少需要进行调整。此设置调整Logstash管道的延迟。管道批处理延迟是Logstash在当前管道工作线程中接收事件后等待新消息的最长时间(以毫秒为单位)。经过这段时间后,Logstash开始执行过滤器和输出.Logstash在接收事件和处理过滤器中的事件之间等待的最长时间是pipeline.batch.delay和 pipeline.batch.size设置的乘积。

如果计划修改默认管道设置,考虑以下建议:

  1. 测量每个变化以确保它增加而不是降低性能。
  2. 确保留出足够的可用内存以应对事件大小的突然增加。
  3. 由于输出通常在I / O等待条件下花费空闲时间,因此可以将工作器数设置为高于CPU核心数。
  4. Java中的线程有名字,你可以使用jstack,top和VisualVM的图形化工具来找出哪些资源给定的线程使用。

logstash 线程模型

在2.2版本前 filter 和output 在不同的线程上执行,pipeline.workers 和pipeline.output.workers 可以有不同的值。但是在 2.2版本后 filter 和output 共用同一个pipeline worker thread。pipeline.workers 和pipeline.output.workers 应该保持一致。实际上pipeline.output.workers 已经不再被使用github issue


参考资料:

  • logstash workers
-------------本文结束感谢您的阅读-------------
坚持分享,您的支持将鼓励我继续创作!
0%