性能故障排除

编辑

您可以使用以下故障排除技巧来快速诊断和解决 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。
    • 如果堆大小太小,导致 JVM 不断进行垃圾回收,CPU 利用率可能会不必要地增加。您可以通过将堆大小加倍来检查此问题,以查看性能是否有所提高。
    • 不要将堆大小增加到超过物理内存的量。必须保留一些内存来运行操作系统和其他进程。作为大多数安装的一般指南,不要超过物理内存的 50-75%。内存越多,可以使用比例越高。
    • 将最小 (Xms) 和最大 (Xmx) 堆分配大小设置为相同的值,以防止堆在运行时调整大小,这是一个非常耗时的过程。
    • 您可以使用与 Java 一起分发的 jmap 命令行实用程序或使用 VisualVM 对 JVM 堆进行更准确的测量。有关更多信息,请参阅分析堆
  4. 调整 Logstash 管道设置