性能故障排除
编辑性能故障排除编辑
您可以使用这些故障排除技巧来快速诊断和解决 Logstash 性能问题。了解本指南不需要管道内部结构的高级知识。但是,如果您想了解更多信息,建议阅读管道文档。
您可能很想跳过前面的步骤,直接更改 pipeline.workers
(-w
) 等设置,以此作为提高性能的首次尝试。根据我们的经验,更改此设置会增加变量的数量,从而使性能问题的故障排除变得更加困难。相反,请一次只进行一项更改并衡量结果。从列表的末尾开始操作是造成混乱情况的必然途径。
性能检查表编辑
-
检查输入源和输出目标的性能
- Logstash 的速度取决于它所连接的服务。Logstash 只能以其输入和输出目标的速度来消费和生成数据!
-
检查系统统计信息
-
CPU
- 注意 CPU 是否被大量使用。在 Linux/Unix 上,您可以运行
top -H
来查看按线程细分的进程统计信息,以及总 CPU 统计信息。 - 如果 CPU 使用率很高,请跳至有关检查 JVM 堆的章节,然后阅读有关调整 Logstash 工作线程设置的章节。
- 注意 CPU 是否被大量使用。在 Linux/Unix 上,您可以运行
-
内存
- 请注意,Logstash 在 Java 虚拟机上运行。这意味着 Logstash 将始终使用您分配给它的最大内存量。
- 查找使用大量内存并可能导致 Logstash 交换到磁盘的其他应用程序。如果应用程序使用的总内存超过物理内存,则可能会发生这种情况。
-
I/O 利用率
-
监控磁盘 I/O 以检查磁盘饱和度。
- 如果您使用的 Logstash 插件(例如文件输出)可能会使您的存储饱和,则可能会发生磁盘饱和。
- 如果您遇到大量错误导致 Logstash 生成大型错误日志,也可能会发生磁盘饱和。
- 在 Linux 上,您可以使用 iostat、dstat 或类似工具来监控磁盘 I/O。
-
监控网络 I/O 以检查网络饱和度。
- 如果您使用的输入/输出执行大量网络操作,则可能会发生网络饱和。
- 在 Linux 上,您可以使用 dstat 或 iftop 等工具来监控您的网络。
-
-
-
检查 JVM 堆
- 对于典型的摄取场景,建议的堆大小不应小于 4GB 且不应大于 8GB。
- 如果堆大小过低,CPU 利用率可能会不必要地增加,导致 JVM 不断进行垃圾回收。您可以通过将堆大小加倍以查看性能是否有所提高来检查此问题。
- 不要将堆大小增加到超过物理内存的量。必须保留一些内存来运行操作系统和其他进程。作为大多数安装的一般准则,不要超过物理内存的 50-75%。您的内存越多,您可以使用的百分比就越高。
- 将最小 (Xms) 和最大 (Xmx) 堆分配大小设置为相同的值,以防止堆在运行时调整大小,这是一个非常耗时的过程。
- 您可以使用 Java 附带的
jmap
命令行实用程序或使用 VisualVM 对 JVM 堆进行更准确的测量。有关更多信息,请参阅分析堆。
-
调整 Logstash 管道设置
- 继续阅读Logstash 管道性能调优和分析,以了解有关调整各个管道的更多信息。