如何排查Logstash性能问题

容器与中间件中间件技术服务知识库
场景介绍

在 Logstash 中,整个 pipleline 分为三个部分:

  • input 插件用于提取数据。
  • filter 插件用于转换并丰富数据。
  • output 插件会将已处理的事件加载到其他环境中,例如 ElasticSearch 。

本文介绍在生产环境中如何排查 Logstash 性能问题的方法。

调试建议
  • 调试过程中,建议每次先调试一项参数值,分别观察源端和目的端服务的消费和写入情况,然后再进行其他参数的调整。
  • 在系统资源充足的情况下,调试 Logstash pipeline 工作线程数和批量处理事件数时,我们可以优先调整管道批大小,例如在迁移场景中,当目标端为 Elasticsearch 时,单 bulk 建议在 5 MB 左右,待目标端写入无法增加时,再调整工作线程数。
  • 整个调整过程中需要关注源端、Logstash 和目标端系统的压力,并且确保有足够的堆内存处理突增的异常事件。
检查项

CPU

建议监控 Logstash 所在服务器的 CPU 使用率。如果 CPU 使用率高,需要同步检查堆内存使用情况。

磁盘IO和网络

建议检查磁盘 IO 和网络情况,避免 IO / 网络被打满导致性能损失。

堆内存

  • 基于 Logstash 官方文档,在大多数应用场景中,建议将堆内存设置为 4 GB~8 GB 即可。如需更大的堆内存,可以对 Logstash 所在的服务器进行扩容。强烈建议在生产环境中进行充分测试,设置合适的堆内存。
  • 堆内存使用率很高或堆内存设置的过小,可能会触发频繁的 GC,导致 CPU 使用率增加。建议增加内存,观察性能是否有提升。
  • 结合 Logstash 官方建议,堆内堆外各占一半内存。

pipeline 参数配置

  • 工作线程数:默认值为 CPU 核数。如果 CPU 使用率不高,可适当调大该参数,提高处理性能。
  • 批大小:用于设置每个独立的工作线程对接收到的多少个 event 做 filter 和 output 处理。适当提高该参数,有利于提高event 处理效率。
参考文档

https://www.elastic.co/guide/en/logstash/7.13/performance-troubleshooting.html 如果您有其他问题,欢迎您联系火山引擎技术支持服务

74
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论