性能故障排除编辑

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

您可能很想跳过前面的步骤,直接更改 pipeline.workers (-w) 等设置,以此作为提高性能的首次尝试。根据我们的经验,更改此设置会增加变量的数量,从而使性能问题的故障排除变得更加困难。相反,请一次只进行一项更改并衡量结果。从列表的末尾开始操作是造成混乱情况的必然途径。

性能检查表编辑

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

    • Logstash 的速度取决于它所连接的服务。Logstash 只能以其输入和输出目标的速度来消费和生成数据!
  2. 检查系统统计信息

    • CPU

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

      • 请注意,Logstash 在 Java 虚拟机上运行。这意味着 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 管道设置