首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么逻辑库需要这么长时间才能启动/加载?

为什么逻辑库需要这么长时间才能启动/加载?
EN

Stack Overflow用户
提问于 2012-11-07 12:40:44
回答 4查看 7.5K关注 0票数 11

编辑:,我更改了标题,因为这个问题不是我最初想的那样。事实上,逻辑储存需要超过一分钟才能开始,这可能被误解为“沉默”.

我正在尝试使logstash运行,因此我按照官方网站上的指示进行了独立安装:http://logstash.net/docs/1.1.4/tutorials/getting-started-simple

基本上,我得到了logstash-1.1.4-monolithic.jar文件,然后构建了一个非常简单的配置文件:(example.conf)

代码语言:javascript
复制
input {
  stdin { type => "stdin-type"  }
}
output {
  stdout { debug_format => "json" }
}

但是,当我运行logstash时,什么都没有出来(我在STDIN中随机输入文本,但没有得到响应):

代码语言:javascript
复制
# java -jar logstash-1.1.4-monolithic.jar agent -f example.conf
Test
toto
hey ??? Wakeup !!!
^C

(有关信息: Java版本是正确的)

代码语言:javascript
复制
# java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)

拜托,谁能告诉我我错过了什么吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-07 22:07:46

好吧,我自己找到的。

一切都很顺利。只是垃圾箱要发射的时间太长了。在我的服务器上超过60秒!再加上启动时间很长,在发射时什么都不打印.

票数 7
EN

Stack Overflow用户

发布于 2016-09-22 11:56:04

因为这个问题仍然相关,我想指出,如果您在Java <8上运行,那么在Linux上启动时间可能会非常慢的一个原因(也许也是Solaris )是因为这些平台上的Oracle JVM在获取随机数的位置上有一个错误。

即使被告知从/dev/urandom获取其随机数,它也不会(至少,不是全部?)。如果您让它从/dev/./urandom读取,这是相同的,但与内部中断的逻辑不匹配,那么您很可能会发现Java启动速度快得多(特别是在J2EE中间件环境中)。

id=6521844

尽管如此,即使使用Java 8,logstash -configtest启动起来仍然非常缓慢;这很可能是因为服务器模式下的64位JVM在启动时会做大量的优化工作(即使在那时,我怀疑JRuby正在做很多与Ruby相关的事情)。

JRuby wiki有一份关于其他启动性能改进(https://github.com/jruby/jruby/wiki/Improving-startup-time)的文档,但不太适用于更快地获得日志存储。我可以将“logstash--configtest”的启动时间缩短到大约8秒,如下所示:

代码语言:javascript
复制
[root@node-2 ~]# DEBUG=1 /opt/logstash/bin/logstash help
DEBUG: exec /opt/logstash/vendor/jruby/bin/jruby --1.9 -J-XX:+UseParNewGC -J-XX:+UseConcMarkSweepGC -J-Djava.awt.headless=true -J-XX:CMSInitiatingOccupancyFraction=75 -J-XX:+UseCMSInitiatingOccupancyOnly -J-XX:+HeapDumpOnOutOfMemoryError -J-Xmx1g -J-XX:HeapDumpPath=/opt/logstash/heapdump.hprof /opt/logstash/lib/bootstrap/environment.rb logstash/runner.rb help

接受它将执行的命令,删除所有java选项,并用--dev替换

代码语言:javascript
复制
[root@node-2 ~]# time /opt/logstash/vendor/jruby/bin/jruby /opt/logstash/lib/bootstrap/environment.rb logstash/runner.rb agent --configtest --config /etc/logstash/logstash-submission.conf 
Configuration OK

real    0m13.367s
user    0m12.966s
sys 0m0.321s
[root@node-2 ~]# time /opt/logstash/vendor/jruby/bin/jruby --dev /opt/logstash/lib/bootstrap/environment.rb logstash/runner.rb agent --configtest --config /etc/logstash/logstash-submission.conf 
Configuration OK

real    0m6.954s
user    0m6.629s
sys 0m0.286s

7秒仍然不是很好,但比14秒还好。7秒左右是甜点的一小口咖啡,所以避免尴尬的中间你的考试结束之前,你的一口喝完。( B^)

一个简单的别名可能是一个有用的快速胜利:

代码语言:javascript
复制
alias logstash-configtest="/opt/logstash/vendor/jruby/bin/jruby --dev /opt/logstash/lib/bootstrap/environment.rb logstash/runner.rb agent --configtest"

我相信您也可以使用USE_RUBY=1标志运行logstash来使用'ruby‘而不是流行的jruby --如果您想经常使用它,您不会在正常运行logstash的情况下这样做,但是如果您想经常使用它,它可能对-configtest很有用。--你确实需要确保你有所有的Ruby模块,然后你就会在你的原生红宝石和流行的jruby之间有一个版本偏差.但是,一个红宝石爱好者也许可以接受这个想法,并将其付诸实施。

票数 1
EN

Stack Overflow用户

发布于 2014-04-10 14:20:12

我一周前就开始使用日志库了。被@jordansissel仇恨驱动的发展谈话所诱惑。最近几天在#logstash irc上与ppl讨论了一些问题,包括您提到的问题。

启动logstash-web (稀疏的sinatra web服务器)需要29(!)我的ubuntu 12.04秒。

我认为logstash必须放弃使用java。Logstash肯定可以像感觉一样运行红宝石应用程序,提供相同的价值,而不是痛苦(或没有痛苦)。

使用java(jruby),控制台上的puts "bla"需要7秒。

简单的回答是: java在杯子里很好,而不是在计算机中。如果你看到类似“先决条件: Java”的东西--准备浪费。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13270004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档