【问题标题】:Very Low Performance With LogStashLogStash 的性能非常低
【发布时间】:2017-02-20 15:49:25
【问题描述】:

我有一个 LogStash 配置和一个 REDIS 代理,它可以完美地处理小流量(10 条消息/秒)。每个 ELK 服务都在其各自独立的 2GB 服务器上运行。

Tomcat(Log4j) -> LogStash -> Redis ->LogStash->ES->Kibana.. 我现在有一个新的记录要求(200 条消息/秒)。

Tomcat->LogStash->Redis 运行速度足够快(250+ 消息/秒),但是第二个 LogStash 似乎不够快,无法从 Redis 消耗 100+ 消息/秒。它目前大约每秒 10 条消息。这可能是由于我的消息大小(我在每条消息中记录了一个 20kb Xml 字符串)

我的第二个 lumberjack.conf 经过多次调整(我也将 -w 10 应用于命令行)进行并行处理后看起来如下所示。我还评论了所有多行过滤器,因为它们不是线程安全的。

    input {
     #Read Log4J messages from the Redis Broker (general errors).
     redis {
      host => "192.168.0.231"
      type => "qalogs"
      port => 6379
      data_type => "list"
      key => "lsqalogs"
      batch_count => 100
      threads => 8
      codec => "json"
    }
    output {
     if [type] == "avail" {
      if [push_index] {
        elasticsearch {
          index => "%{push_index}-%{push_type}-%{+YYYY.MM.dd}"
          hosts => ["192.168.0.230:9200"]
          flush_size => 50
          manage_template => false
          workers => 40
        }
      } else {
        elasticsearch {
          index => "log-%{type}-%{+YYYY.MM.dd}"
          hosts => ["192.168.0.230:9200"]
          flush_size => 50
          manage_template => false
          workers => 40
        }
      }
     }
   }

我已经为此工作了几个月,并且已经自动化了完整的堆栈安装。我唯一的问题是性能很糟糕。

第二个 LogStash 服务器以 0.3 Load-Avg 运行,因此我相信它肯定可以处理 100+/messages/second 的热量。

我在单独的 2GB 服务器上使用 LogStash 2.1v、ES 2.1、Redis3。我真的很希望能对这个领域有所了解?

提前致谢。

【问题讨论】:

    标签: multithreading elasticsearch logstash logstash-configuration


    【解决方案1】:

    尝试减少弹性搜索输出中的工作人员。

    来自blog post by elastic on Logstash optimization(强调我的):

    ...修改输出中的配置变量(最值得注意的是 Elasticsearch 输出中的“workers”选项,它可能在您的机器拥有的内核数量下是最佳的)... p>

    文章提出的另一件事是瓶颈可能是您的弹性搜索。 2GB 的内存对于 elasticsearch 节点来说是很小的,问题可能在于资源阻塞 elasticsearch 而不是配置错误的 logstash。

    【讨论】:

    • 感谢您的信息。我现在已将所有 LogStash 和 ES 从 2GB 升级到 4GB(四核)服务器,希望能看到更好的性能。我还将工作线程的数量减少到 4 个。但是问题仍然存在(10+ 消息/秒)。
    • 我发现了flush_size => 50 的一个瓶颈,通过将其增加到 500,我看到了一个小的改进。 LogStash 消费者现在从 REDIS 读取大约 30 条消息/秒。
    • 感谢所有信息。我能够通过删除所有 grok 过滤器来解决这个问题。事实证明,某些 grok 过滤器(即 postfix)导致 LogStash 变慢。删除这些 grok 过滤器后,我经历了超过 500 多条消息/秒,这对我来说绰绰有余。后缀过滤器已移至另一个不会干扰此系统的 LogStash 实例。再次感谢所有的建议。我已将它们作为最佳实践加以实施。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 2021-05-24
    • 1970-01-01
    相关资源
    最近更新 更多