【问题标题】:When using logstash to index data from MySQL to ElasticSearch,it shows Java heapspace error使用 logstash 将数据从 MySQL 索引到 ElasticSearch 时,显示 Java heapspace 错误
【发布时间】:2016-05-02 17:38:15
【问题描述】:

MySQL 表有 191000 行。当我尝试以下操作时,它会运行一段时间并显示此错误:

logstash/bin/logstash -f /home/vatsa/logs/conts-out.conf  

java.lang.OutOfMemoryError:Java 堆空间 将堆转储到 /home/vatsa/logstash/heapdump.hprof 间隔异常刷新缓冲区! {:error=>"Java 堆空间", :class=>"Java::JavaLang::OutOfMemoryError", :level=>:warn} 错误:您的应用程序使用的内存超过了 1G 的安全上限。 指定 -J-Xmx####m 以增加它(#### = 以 MB 为单位的上限大小)。 指定 -w 以获得完整的 OutOfMemoryError 堆栈跟踪

我不明白这个错误。如何解决这个问题。 提前致谢。

【问题讨论】:

  • 尝试使用更多内存运行 Logstash:logstash/bin/logstash -J-Xmx2048m -f /home/vatsa/logs/conts-out.conf
  • 同样的错误?只要您的计算机上有更多可用 RAM,请尝试增加更多(3072、4096 等)。
  • 我试过了,但出现以下错误:/home/vatsa/logstash/vendor/bundle/jruby/1.9/gems/clamp-0.6.5/lib/ 上的无法识别选项 '-J' signal_usage_error clamp/command.rb:103 find_option 在 /home/vatsa/logstash/vendor/bundle/jruby/1.9/gems/clamp-0.6.5/lib/clamp/option/parsing.rb:62 在 /home/vatsa/ 运行logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.1.1-java/lib/logstash/runner.rb:79 调用 org/jruby/RubyProc.java:281 初始化/home/vatsa/logstash /vendor/bundle/jruby/1.9/gems/stud-0.0.22/lib/stud/task.rb:24 不知道错误是什么!如何解决这个问题?

标签: jdbc elasticsearch logstash


【解决方案1】:

您可以尝试启用查询分页。这将限制从 MySQL 检索的元素数量。对应的设置如下:

input {
  jdbc {
    ...
    jdbc_paging_enabled => true
    jdbc_page_size => 100000
    ...
  }
}

来自 jdbc_paging_enabled 的 Logstash documentation

这会导致一条 sql 语句被分解成多个查询。每个查询都将使用限制和偏移量来共同检索完整的结果集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    相关资源
    最近更新 更多