性能故障排除指南

您可以使用此故障排除指南快速诊断和解决Logstash性能问题。管道的高级知识与本指南基本无关,当本指南无法满足时,建议阅读 管道文档

您可能会试图跳过并更改像 pipeline.workers (-w) 这样的设置,作为提高性能的第一次尝试。根据我们的经验,更改此设置会使解决性能问题变得更加困难,因为您会增加运行中的变量数量。相反,每次应当进行一项更改并测试结果。从此列表的末尾开始是解决混乱局面的有效方法。

性能检查

  1. 检查输入源和输出目标的性能:

    • Logstash只与它连接的服务一样快。 Logstash只能以其输入和输出目的地的速度,消耗和生成数据!
  2. 检查系统统计数据:

    • CPU

      • 请注意CPU是否被大量使用。在Linux/Unix上,您可以运行 top -H 来查看按线程分解的进程统计信息以及CPU的整体统计信息。
      • 如果CPU使用率很高,请跳至有关检查JVM堆的部分,然后阅读有关调整Logstash工作程序设置的部分。
    • 内存

      • 请注意Logstash在Java VM上运行。这意味着Logstash将始终使用您分配给它的最大内存量。
      • 寻找使用大量内存,以及可能导致Logstash swap到磁盘的其他应用程序。如果应用程序使用的总内存超过物理内存,则会发生这种情况。
    • I/O利用率

      • 监视磁盘I/O以检查磁盘饱和度。

        • 如果您使用可能会使存储饱和的Logstash插件(例如文件输出),则可能会发生磁盘饱和。
        • 如果遇到大量错误迫使Logstash生成大错误日志,也会发生磁盘饱和。
        • 在Linux上,您可以使用iostat,dstat或类似的东西来监视磁盘I/O.
      • 监视网络I/O以确定网络饱和度。

        • 如果您使用执行大量网络操作的输入/输出,则可能会发生网络饱和。
        • 在Linux上,您可以使用dstat或iftop等工具来监控网络。
  3. 检查JVM堆:

    • 如果堆太小,CPU利用率通常会突破上限,导致JVM不断地收集垃圾。
    • 检查此问题的一种快速方法是将堆大小加倍,并查看性能是否有所提高。不要将堆大小配置得超过物理内存量。为操作系统和其他进程留出至少1GB的空闲空间。
    • 您可以使用随Java分发的jmap命令行实用程序,或使用VisualVM来更准确地测量JVM堆。有关更多信息,请参阅 堆性能分析
    • 始终确保将最小(Xms)和最大(Xmx)堆分配大小设置为相同的值,以防止堆在运行时调整大小,这将是一个造成极大开销的过程。
  4. 调整Logstash工作者设置:

    • 首先使用 -w 参数扩展管道工作者的数量,这可以增加用于过滤器和输出的线程数。如果需要,可以安全地将其扩展到多个CPU内核,因为线程可能在I/O上变为空闲。
    • 您还可以调整输出批大小。对于许多输出,例如Elasticsearch输出,此设置将对应于I/O操作的大小。对于Elasticsearch输出,此设置对应于批量大小。

results matching ""

    No results matching ""