性能故障排除

编辑

您可以使用这些故障排除技巧来快速诊断和解决 Logstash 性能问题。 理解本指南不需要管道内部的深入知识。但是,如果您想深入了解这些技巧,建议阅读管道文档

您可能会很想直接修改 pipeline.workers (-w) 等设置作为提高性能的首要尝试。 根据我们的经验,更改此设置会使性能问题的故障排除变得更加困难,因为您增加了正在起作用的变量的数量。 相反,一次只更改一个设置并衡量结果。 从此列表的末尾开始是制造混乱局面的必然方法。

性能检查清单

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

    • Logstash 的速度仅取决于它连接的服务。 Logstash 的数据消耗和产生速度仅取决于其输入和输出目标的速度!
  2. 检查系统统计信息

    • CPU

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

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

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

        • 如果您正在使用可能使存储饱和的 Logstash 插件(例如文件输出),则可能会发生磁盘饱和。
        • 如果您遇到大量错误,导致 Logstash 生成大型错误日志,也可能会发生磁盘饱和。
        • 在 Linux 上,您可以使用 iostat、dstat 或类似工具来监控磁盘 I/O。
      • 监控网络 I/O 以检查网络饱和度。

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

    • 对于典型的摄取场景,建议的堆大小不应小于 4GB,也不应大于 8GB。
    • 如果堆大小太小,可能会不必要地增加 CPU 使用率,从而导致 JVM 不断进行垃圾回收。您可以通过将堆大小加倍来检查此问题,看看性能是否有所提高。
    • 不要将堆大小增加到超出物理内存的量。必须保留一些内存来运行操作系统和其他进程。作为大多数安装的一般准则,请不要超过物理内存的 50-75%。您拥有的内存越多,您可以使用的百分比就越高。
    • 将最小 (Xms) 和最大 (Xmx) 堆分配大小设置为相同的值,以防止堆在运行时调整大小,这是一个非常昂贵的过程。
    • 您可以使用 Java 分发的 jmap 命令行实用程序或使用 VisualVM 来更准确地测量 JVM 堆。有关更多信息,请参阅分析堆
  4. 调整 Logstash 管道设置