使用redis作为logstash的输入时,获取redis列表比推入它更慢?

时间:2015-04-17 08:47:51

标签: elasticsearch redis logstash

我已按照以下网页上的说明构建了日志虚拟系统 http://michael.bouvy.net/blog/en/2013/11/19/collect-visualize-your-logs-logstash-elasticsearch-redis-kibana/

登录磁盘 - > logstash-forwarder ----------> redis - > logstash - > elasticsearch

在添加四台服务器将日志发送到我的中央日志收集服务器之前,所有事情都已解决。

redis服务器的内存随着时间的推移而增加,并在所有内存消耗完后崩溃。

我使用redis-cli监视检查了一段时间,发现rpushing到redis的速度比redis的blpop速度快得多,我认为这是redis服务器内存增加的原因。 / p>

weblogic @ MSAMGM01:〜/ logcenter / redis / bin $ ./redis-cli monitor> 1.txt

weblogic @ MSAMGM01:〜/ logcenter / redis / bin $ grep blpop 1.txt | wc -l 1159 weblogic @ MSAMGM01:〜/ logcenter / redis / bin $ grep rpush 1.txt | wc -l 17123

任何人都有任何想法或经验来解决这类问题?

BTW,中央服务器的CPU很低,我确认这不是造成这个问题的根本原因。

谢谢!

2 个答案:

答案 0 :(得分:0)

根据 documentation for the Redis input, 您应该能够将threads设置为您要用于的线程数 从Redis那里读到,或许你可以增加这个来从Redis中吸取更多的事件 同时?

此外,如果logstash在过滤管道中太慢,则可以运行 bin/logstash -w <N>其中<N>是要运行的过滤工作者数 同时进行。

答案 1 :(得分:0)

经过一番尝试。我最终从elasticsearch日志中找到了原因:

超出了高磁盘水印,它会尝试移动碎片。

但我只有一个节点用于测试,我认为这是导致性能不佳的原因。

删除一些索引后,所有事情都运作良好。