场景介绍
在 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 如果您有其他问题,欢迎您联系火山引擎技术支持服务